Java 第二个查询是高效的,不需要表联接
从hibernate参考中: 特殊属性(小写)id可用于引用对象的唯一标识符。 有关更多信息,请参见第16.5节“参考标识符属性”Java 第二个查询是高效的,不需要表联接,java,hibernate,Java,Hibernate,从hibernate参考中: 特殊属性(小写)id可用于引用对象的唯一标识符。 有关更多信息,请参见第16.5节“参考标识符属性” from Cat as cat where cat.id = 123 from Cat as cat where cat.mate.id = 69 第二个查询是高效的,不需要表联接 为什么第二个查询不需要表联接,为什么它提到它是高效的?OP问题来自。为什么不需要加入。因为正如Hibernate所说: 引用标识符属性 对复合标识符属性的引用遵循相同的命名 规则。如果
from Cat as cat where cat.id = 123
from Cat as cat where cat.mate.id = 69
第二个查询是高效的,不需要表联接
为什么第二个查询不需要表联接,为什么它提到它是高效的?OP问题来自。为什么不需要加入。因为正如Hibernate所说:
引用标识符属性
对复合标识符属性的引用遵循相同的命名
规则。如果实体具有名为id的非标识符属性,则
复合标识符属性只能由其定义的
命名的。否则,特殊id属性可用于引用
标识符属性
cat.mate.id有一个identifier属性,这就是它不需要联接的原因,并且正在使用该id引用该行。这就是为什么第二个查询比带有联接的查询更高效。因此,最终如果你有一个好的映射策略,它将更加有效 请提供更多的上下文,比如指向文档的链接。我想,有了这些信息,数据库中的cat.mate就是mate.id的外键。如果查询可以执行为
select*from cat where mate=69
当我复制粘贴了所有可用信息时,您希望我如何提供更多信息?@Pablo,您应该将其写入hibernate文档团队。