我正在尝试创建一系列对象,这些对象都存储在单独的表中,但是所有这些表上都有一组共同的字段。我希望 Hibernate 对所有这些表进行联合,但不包括父类(super class)作为表。
当我只注释父类(super class)时:
@MappedSuperclass
@Inheritance(strategy=InheritanceType.TABLE_PER_CLASS)
...hibernate 将为父类(super class)的 (n) 个子类型分别运行 (n) 个查询。
当我删除@MappedSuperclass 并将@Entity 放在父类(super class)上时,Hibernate 将执行花哨的 UNION 查询,但将父类(super class)作为表包含在 UNION 中(父类(super class)没有表)。
如何在不使父类成为@Entity(因为它不是实体,因此没有表)的情况下将所有子类(不是单独的查询)一起使用 UNION?
最佳答案
我发现将父类标记为“抽象”可以解决问题,Hibernate 不再将它包含在 UNION 中,而是将所有子类联合起来。
关于带有@MappedSuperclass 的 hibernate TABLE_PER_CLASS 不会创建 UNION 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6632248/