【问题标题】:JPQL TypedQuery - setParamer does not workJPQL TypedQuery - setParameter 不起作用
【发布时间】:2021-06-23 10:43:36
【问题描述】:

我正在尝试使用命名查询来获取具有一对一关系的实体。我的“位置”条件在关系实体上。我给出了一个命名参数。当我执行查询时,它忽略传递的参数并给我所有记录。 我尝试了位置参数,它也不起作用。

查询

@NamedQuery(
   name = "country.by.region",
   query = " select c from Country c join Region r on r.id = :regid"
)

国家实体

public class Country {

    @Id
    @Column(name = "COUNTRY_ID")
    private String id;
    @Column(name = "COUNTRY_NAME")
    private String name;
    @OneToOne(targetEntity = Region.class, cascade = CascadeType.ALL)
    @JoinColumn(name = "REGION_ID")
    private Region region;
    // ...
}

区域实体

public class Region {

    @Id
    @Column(name = "REGION_ID")
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "regSeq")
    private int id;
    @Column(name = "REGION_NAME")
    private String name;
    // ...
}

DAO 实现

@Override
public List<Country> findBy(Region region) {
    TypedQuery<Country> query = getEntityManager().createNamedQuery("country.by.region", Country.class);
    query.setParameter("regid", region.getId());
    query.setMaxResults(30);
    return query.getResultList();
}

【问题讨论】:

    标签: java hibernate jpa jpql named-query


    【解决方案1】:

    尝试以这种方式更正您的查询:

    select c from Country c join c.region r where r.id = :regid
    

    另请参阅文档的this section

    【讨论】:

      猜你喜欢
      • 2014-08-17
      • 1970-01-01
      • 2014-04-04
      • 2015-07-05
      • 2016-08-11
      • 2020-04-23
      • 2020-10-20
      • 2016-07-03
      • 2014-10-02
      相关资源
      最近更新 更多