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

Sea*_*loy 4 union annotations hibernate table-per-class mappedsuperclass

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

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

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

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

如何在不使父类成为@Entity(因为它不是实体,因此没有表)的情况下将所有子类(不是单独的查询)一起使用 UNION?

Sea*_*loy 6

我发现,标志着父类为“抽象”的伎俩一样,休眠不再包括它在UNION和UNION共同所有的子类。