HQL返回重复的对象

时间:2015-08-03 05:30:29

标签: hibernate join duplicates hql fetch

我有两个关于HQL使用的问题

  1. 我有一个如下所示的查询,但它会返回重复的行/对象,添加DISTINCT关键字可以解决问题,但是有人可以解释一下,为什么我们需要在这里有所区别,我们不能没有它吗?

    select st from State st inner join fetch st.cities
    
  2. HQL文档说明了

      

    获取连接通常不需要分配别名,因为不应在where子句(或任何其他子句)中使用关联的对象。

    但是为什么我们不能在where子句中使用关联对象,如果我们想要急切地获取但又想添加一些条件然后怎么做呢?

1 个答案:

答案 0 :(得分:2)

  1. 仅仅因为那是如何指定HQL和JPQL的:JDBC ResultSet的每一行都返回一个元素,除非你使用distinct。

  2. 因为如果你被允许对获取的实体添加限制,你可以打破你的实体本身的不变量,Hibernate和你自己的代码,假设总是被验证:{{1返回的城市是州的城市。他们都是。不只是碰巧遵守随机查询的某些标准。