JPQL TypedQuery - setParamer 不起作用
JPQL TypedQuery - setParamer does not work
我正在尝试使用命名查询获取具有一对一关系的实体。我的“where”条件在关系实体上。我给出了一个 命名参数 。当我执行查询时,它 忽略 传递的参数并为我提供所有记录。
我尝试使用 位置参数 ,它也没有用。
查询
@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();
}
尝试以这种方式更正您的查询:
select c from Country c join c.region r where r.id = :regid
另请参阅文档的 this section。
我正在尝试使用命名查询获取具有一对一关系的实体。我的“where”条件在关系实体上。我给出了一个 命名参数 。当我执行查询时,它 忽略 传递的参数并为我提供所有记录。 我尝试使用 位置参数 ,它也没有用。
查询
@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();
}
尝试以这种方式更正您的查询:
select c from Country c join c.region r where r.id = :regid
另请参阅文档的 this section。