HQL returns 重复对象
HQL returns duplicate objects
我有两个关于 HQL 用法的问题
我有如下查询,但它 returns 重复 rows/objects,添加 DISTINCT 关键字可以解决问题,但有人可以解释一下,为什么我们在这里需要 distinct,可以'我们不能没有它吗?
select st from State st inner join fetch st.cities
HQL 文档说
A fetch join does not usually need to assign an alias, because the associated objects should not be used in the where clause (or any other clause).
但是为什么我们不能在where子句中使用关联对象,如果我们既想急切又想加条件怎么办呢?
仅仅是因为 HQL 和 JPQL 就是这样指定的:JDBC 结果集的每一行返回一个元素,除非您使用不同的。
因为如果允许您对获取的实体添加限制,您会破坏实体本身的不变量,即 Hibernate 和您自己的代码假设始终被验证:返回的城市state.getCities()
是该州的城市。他们都。不仅仅是那些碰巧符合随机查询的某些标准的。
我有两个关于 HQL 用法的问题
我有如下查询,但它 returns 重复 rows/objects,添加 DISTINCT 关键字可以解决问题,但有人可以解释一下,为什么我们在这里需要 distinct,可以'我们不能没有它吗?
select st from State st inner join fetch st.cities
HQL 文档说
A fetch join does not usually need to assign an alias, because the associated objects should not be used in the where clause (or any other clause).
但是为什么我们不能在where子句中使用关联对象,如果我们既想急切又想加条件怎么办呢?
仅仅是因为 HQL 和 JPQL 就是这样指定的:JDBC 结果集的每一行返回一个元素,除非您使用不同的。
因为如果允许您对获取的实体添加限制,您会破坏实体本身的不变量,即 Hibernate 和您自己的代码假设始终被验证:返回的城市
state.getCities()
是该州的城市。他们都。不仅仅是那些碰巧符合随机查询的某些标准的。