Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jpa JPQL:位置为[1]的参数不存在_Jpa_Jpql - Fatal编程技术网

Jpa JPQL:位置为[1]的参数不存在

Jpa JPQL:位置为[1]的参数不存在,jpa,jpql,Jpa,Jpql,我正在与JPA和JPQL合作。我希望使用JPQL获取并加入一个集合,该集合是“main”实体的属性。以下是我的源代码: public Rent getRentWithAllDetails(Rent rent) { Query queryString = em.createQuery(" select r from Rent r JOIN FETCH r.rentables where r.id = :rid").setParameter(1, rent.getId());

我正在与JPA和JPQL合作。我希望使用JPQL获取并加入一个集合,该集合是“main”实体的属性。以下是我的源代码:

    public Rent getRentWithAllDetails(Rent rent) {

    Query queryString =  em.createQuery(" select r from Rent r JOIN FETCH r.rentables where r.id = :rid").setParameter(1, rent.getId());

    List <Rent> resultList = queryString.getResultList();

    return resultList.get(0);
}

有人能帮我一下吗?

您正在使用一个命名参数,因此在创建查询时应使用该名称绑定一个参数:

String sql = "select r from Rent r JOIN FETCH r.rentables where r.id = :rid";
Query queryString =  em.createQuery(sql)
    .setParameter("rid", rent.getId());
List<Rent> resultList = queryString.getResultList();
String sql=“从Rent r中选择r并加入FETCH r.rentables,其中r.id=:rid”;
Query queryString=em.createQuery(sql)
.setParameter(“rid”,rent.getId());
List resultList=queryString.getResultList();

请将代码更改为:

public Rent getRentWithAllDetails(Rent rent) {
   Query queryString =  em.createQuery(" select r from Rent r JOIN FETCH r.rentables where r.id = :rid").setParameter("rid", rent.getId());
   List <Rent> resultList = queryString.getResultList();
   return resultList.get(0);
}
public Rent getrent with alldetails(租金){
Query queryString=em.createQuery(“从租金中选择r,然后加入FETCH r.rentables,其中r.id=:rid”).setParameter(“rid”,Rent.getId());
List resultList=queryString.getResultList();
返回resultList.get(0);
}

如果多次重复
rid
,您可以相应地使用0,1..etc,否则使用参数名称本身。

了解JPA编号(位置)参数和命名参数之间的区别。互联网上有很多文件告诉我们you@DN1,谢谢你的贡献!
public Rent getRentWithAllDetails(Rent rent) {
   Query queryString =  em.createQuery(" select r from Rent r JOIN FETCH r.rentables where r.id = :rid").setParameter("rid", rent.getId());
   List <Rent> resultList = queryString.getResultList();
   return resultList.get(0);
}