hibernate hql在WITH和WHERE之间有所不同

时间:2011-04-28 08:12:07

标签: hibernate hql

大家好: 我正在研究HQL

有没有人可以解释或提供一些关于HQL中WITH和WHERE之间不同的链接?

http://docs.jboss.org/hibernate/core/3.3/reference/en/html/queryhql.html

例如:

  

来自Cat作为猫       离开加入cat.kittens作为小猫           与kitten.bodyWeight> 10.0

我可以将替换为 吗?

THX

2 个答案:

答案 0 :(得分:3)

With用于“提供额外的连接条件”,这意味着它被添加到连接而不是where子句:

from Cat as cat 
  left join cat.kittens as kitten 
  with kitten.bodyWeight > 10.0

将被翻译成类似的内容;

from Cat as cat
  left outer join Cat as kitten
    on cat.id = kitten.mother_id 
      and kitten.bodyWeight > 10.0

虽然这个

from Cat as cat 
  left join cat.kittens as kitten 
where kitten.bodyWeight > 10.0

被翻译为

from Cat as cat
  left outer join Cat as kitten
    on cat.id = kitten.mother_id 
where
  kitten.bodyWeight > 10.0

答案 1 :(得分:1)

将“with”替换为“where”将结果限制为使用bodyWeight> 拥有小猫的猫10.0。 使用“with”可以获得没有小猫的猫。