我最近回答了一个问题,为什么PolymorphismType.EXPLICIT不会将查询限制为特定请求的类.我对答案的研究让我怀疑为什么会有这样的注释,以及它有什么好处.
在Hibernate文档说以下内容:
显式多态性意味着只有显式命名该类的查询才会返回类实例.命名该类的查询将仅返回映射的子类的实例.
...然而,正如Stack Overflow 多次提出的那样,措辞有点令人困惑.人们希望使用它来避免子类表之间的连接,并且它不会按照预期的方式完成工作.特别是,如果你有一个A-> B类层次结构和A标EXPLICIT
,查询上的一个将检索乙实例,以及因为他们是"......映射的子类".
我认为,这个注释的使用方式是B标记EXPLICIT
.随后的查询上的一个将返回唯一的实例A的,不只是实际是A型的对象,而且对于填充仅共享领域B型的对象.这让注解用于轻量级模式.
所以我的问题是: 除了启用轻量级模式之外,这个注释还有其他好的用例吗?作为第二个问题,是否有关于它如何与各种InheritanceType
值交互的文档,特别是每个类加入的子类和表?