【发布时间】:2017-06-07 16:40:48
【问题描述】:
我有两个班级 C1 和 C2。每个都保留在自己的表中。每个都有自己的 Hibernate XML 描述,提到了自己的表。这些类之间根本没有联系。
除了 C1 是 C2 的子类。
显然 C1 的 XML 从 C2 复制了很多(添加了一些东西),但它是一个单独的副本。再说一遍:XML 文件都没有提到其他类或其他表。
但是现在,当我执行“来自 C2”的查询时,Hibernate 会拉入所有两个表。
从逻辑上讲,这是有道理的:C1 实际上是 C2,所以如果我想要所有 C2,我也需要 C1,所以我们需要读取 C1 的所有表。 Hibernate 必须使用反射来检测 C2 的子类 C1。
假设这是预期的行为(尽管我没有预料到!)我该如何避免它?有什么办法可以告诉 Hibernate,当我说“来自 C2”时,我的意思是仅启动 C2 而不是启动 C1?是否有一个子句可以添加到查询中,将其限制为非 C1 类型的对象,同时避免首先查询 C1 表的性能损失?
【问题讨论】: