使用@MappedSuperclass的Hibernate TABLE_PER_CLASS不会创建UNION查询

时间:2011-07-09 02:08:11

标签: hibernate annotations union mappedsuperclass table-per-class

我正在尝试创建一系列对象,这些对象都存储在单独的表中,但所有这些表都有一组共同的字段。我希望Hibernate对所有这些表执行UNION,但不要将超类包含为表。

当我用以下方法注释超类时: @MappedSuperclass @Inheritance(策略= InheritanceType.TABLE_PER_CLASS)

... hibernate将针对超类的(n)子类型分别运行(n)查询。

当我删除@MappedSuperclass并将@Entity放在超类上时,Hibernate将执行花哨的UNION查询,但是在UNION中包含超类作为表(没有超类表)。

如何在不使父类成为@Entity的情况下将所有子类(而不是单独的查询)连接到UNION(因为它不是实体,没有表格)?

1 个答案:

答案 0 :(得分:4)

我发现将父类标记为“抽象”可以解决问题,Hibernate不再将它包含在UNION中, UNION一起包含在所有子类中。