当前位置: 首页 > 知识库问答 >
问题:

QueryException:JPA样式的位置参数不是整数序数

燕俊明
2023-03-14

我得到了“QueryException:JPA风格的位置参数不是整数序数”,我试图通过其他求解方法(如org)来求解。冬眠QueryException:JPA风格的位置参数不是整数序数,但仍然不起作用。

我尝试硬编码更改表单?1到数据库中已经有的一些数据,它可以工作,但更改为?1后它再次给出错误。

---硬代码之前(有错误)--在存储库中--

@Query(
    value = "SELECT user_att_workshop.id, user_att_workshop.user_id, user_att_workshop.workshop_att_id, skill.skill_name, user_att_workshop.skill_score " + 
            "FROM user_att_workshop LEFT JOIN skill on user_att_workshop.skill_id = skill.id " + 
            "WHERE user_att_workshop.user_id = ?1 " + 
            "AND user_att_workshop.workshop_att_id = ?2;", 
            nativeQuery = true
)
public List<UserScoreByWorkshopAtt> findUserScoreByUserIdAndWorkshopId(int userId, int workshopId);

--正在使用中--

public List<UserScoreByWorkshopAtt> findUserScoreByUserIdAndWorkshopIdtest(
    int userId, 
    int workshopId) {

    return 
        userScoreByWorkshopAttRepository.findUserScoreByUserIdAndWorkshopId(
        userId,
        workshopId
    );
}

--在控制器中--

List<UserScoreByWorkshopAtt> getUserScooreByUserId(
    @PathVariable("user_id") int userId, 
    @PathVariable("workshop_id") int workshopId) {

    return userScoreByWorkshopAttService.findUserScoreByUserIdAndWorkshopIdtest(
        userId, 
        workshopId
    );

}

-在硬代码之后(可以运行并且没有错误)-在存储库中-

 @Query(value = "SELECT user_att_workshop.id, user_att_workshop.user_id, user_att_workshop.workshop_att_id, skill.skill_name, user_att_workshop.skill_score FROM user_att_workshop LEFT JOIN skill on user_att_workshop.skill_id = skill.id  WHERE user_att_workshop.user_id = 5 AND user_att_workshop.workshop_att_id = 2;", nativeQuery = true)
public List<UserScoreByWorkshopAtt> findUserScoreByUserIdAndWorkshopId();

--正在使用中--

public List<UserScoreByWorkshopAtt> findUserScoreByUserIdAndWorkshopIdtest() {
    return userScoreByWorkshopAttRepository.findUserScoreByUserIdAndWorkshopId();
}

--在控制器中--

List<UserScoreByWorkshopAtt> getUserScooreByUserId(@PathVariable("user_id") int userId,
            @PathVariable("workshop_id") int workshopId) {
        return userScoreByWorkshopAttService.findUserScoreByUserIdAndWorkshopIdtest();
    }

原因:org.hibernate.QueryException:JPA风格的位置参数不是一个完整的序数org.hibernate.engine.query.spi.参数arser.parse(参数arser.java:195)在org.hibernate.engine.query.spi.ParamLocationRecognizer.parse位置(ParamLocationRecognizer.html" target="_blank">java:56)在org.hibernate.engine.query.internal.NativeQuery解释terStandard)在org.hibernate.engine.query.spi.QueryPlanCache.getSQLParameterMetadata(QueryPlanCache.java:128)在org.hibernate.internal.AbstractSharedSessionContract.get

共有1个答案

周健
2023-03-14

你能把它写成这样吗:

@Query(
    value = "SELECT user_att_workshop.id, user_att_workshop.user_id, user_att_workshop.workshop_att_id, skill.skill_name, user_att_workshop.skill_score " + 
            "FROM user_att_workshop LEFT JOIN skill on user_att_workshop.skill_id = skill.id " + 
            "WHERE user_att_workshop.user_id = :userId " + 
            "AND user_att_workshop.workshop_att_id = :workshopId;", 
            nativeQuery = true
)
public List<UserScoreByWorkshopAtt> findUserScoreByUserIdAndWorkshopId(@Param("userId")int userId,@Param("workshopId") int workshopId);

或者从查询末尾删除';并检查任何空格

@Query(
    value = "SELECT user_att_workshop.id, user_att_workshop.user_id, user_att_workshop.workshop_att_id, skill.skill_name, user_att_workshop.skill_score " + 
            "FROM user_att_workshop LEFT JOIN skill on user_att_workshop.skill_id = skill.id " + 
            "WHERE user_att_workshop.user_id =?1 " + 
            "AND user_att_workshop.workshop_att_id =?2", 
            nativeQuery = true
)
public List<UserScoreByWorkshopAtt> findUserScoreByUserIdAndWorkshopId(int userId, int workshopId);
 类似资料:
  • 问题内容: 我有以下JPQL请求; 但它显示以下错误: 我的问题是什么原因? 问题答案: 行之间没有空格 还要检查?3参数是否为空列表

  • 我有以下JPQL请求; 但它打印以下错误: 我的问题的原因是什么?

  • 我想执行我的选择查询, @查询(value=“select*from data o,其中o.id=:id”,nativeQuery=true) 公共列表查找列表(整数id); 获取非法参数异常, 位置超出已声明顺序参数的数量。请记住,序数参数是基于1的!职位:1

  • 位置参数,有时也称必备参数,指的是必须按照正确的顺序将实际参数传到函数中,换句话说,调用函数时传入实际参数的数量和位置都必须和定义函数时保持一致。 实参和形参数量必须一致 在调用函数,指定的实际参数的数量,必须和形式参数的数量一致(传多传少都不行),否则 Python 解释器会抛出 TypeError 异常,并提示缺少必要的位置参数。 例如: 运行结果为: Traceback (most rece

  • 目前为止,我们的脚本示例长这样: #!/bin/bash # sysinfo_page - A script to produce a system information HTML file ##### Constants TITLE="System Information for $HOSTNAME" RIGHT_NOW=$(date +"%x %r %Z") TIME_STAMP="U

  • 我正在使用Hibernate/JPA执行本机PostGIS查询。这些查询的问题在于它们需要不是经典X='value'形式的参数。 我的问题是:- 错误:- 有人知道如何解决这种情况吗?