来自hibernate参考:
特殊属性(小写)id可用于引用对象的唯一标识符。 有关更多信息,请参见第16.5节“引用标识符属性”。
from Cat as cat where cat.id = 123
from Cat as cat where cat.mate.id = 69
第二个查询是有效的,不需要表连接。
为什么第二个查询不需要表连接,为什么它提到它有效?
答案 0 :(得分:0)
OP问题来自Hibernate documentation。为什么不需要加入。因为正如Hibernate所说:
参考标识符属性
对复合标识符属性的引用遵循相同的命名 规则。如果实体具有名为id的非标识符属性,则 复合标识符属性只能由其定义的引用 命名。否则,可以使用特殊的id属性来引用 标识符属性。
Quoted From Here cat.mate.id有一个标识符属性,这就是为什么它不需要加入并使用Id来引用该行。这就是为什么第二个查询比具有连接的查询更有效的原因。所以最后如果你有一个好的映射策略,它会更有效率!