4

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

当我只用注释超类时:@MappedSuperclass @Inheritance(strategy=InheritanceType.TABLE_PER_CLASS)

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

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

如何在不将父类设为 @Entity 的情况下将所有子类(而不是单独的查询)放在 UNION 中(因为它不是实体,所以没有表)?

4

1 回答 1

6

我发现将父类标记为“抽象”就可以了,Hibernate 不再将其包含在 UNION 中,而是将所有子类一起进行了UNION。

于 2011-07-09T16:46:41.063 回答