Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 第二个查询是高效的,不需要表联接_Java_Hibernate - Fatal编程技术网

Java 第二个查询是高效的,不需要表联接

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所说: 引用标识符属性 对复合标识符属性的引用遵循相同的命名 规则。如果

从hibernate参考中:

特殊属性(小写)id可用于引用对象的唯一标识符。 有关更多信息,请参见第16.5节“参考标识符属性”

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文档团队。