带有@MappedSuperclass 的 hibernate TABLE_PER_CLASS 不会创建 UNION 查询

标签 hibernate annotations union mappedsuperclass table-per-class

我正在尝试创建一系列对象,这些对象都存储在单独的表中,但是所有这些表上都有一组共同的字段。我希望 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/

相关文章:

java - 导入org.hibernate.annotations.Immutable/Type时出错?

java - 执行 Java AnnotationProcessor 时出现 ClassNotFound 异常

sql - IF EXISTS语句中的UNION无法正常工作

sql - 多次使用 union 并在最终结果之上使用不同的方法

hibernate - Grails Controller (简单)代码占用太多内存。如何优化?

mysql - hibernate和mysql分区

java - 如何停止 @ManyToOne JPA 中的重复对象?

java - JBoss EAP 7 和 Ifinispan

Java 注释 - 是否有任何辅助库来读取/处理注释?

mysql - 从两个表中选择第一行