我想将一个类映射到一个表,将一个子类映射到另一个表。我不确定你是否能以正确的方式做到这一点。到目前为止我尝试过:
@javax.persistence.Entity
@Inheritance(strategy = InheritanceType.JOINED)
@Table(name = "MyTable1")
public class MyClass
@javax.persistence.Entity
@Inheritance(strategy = InheritanceType.JOINED)
@Table(name = "MyTable2")
public class MySubclass extends MyClass
Run Code Online (Sandbox Code Playgroud)
它有效,但在生成的 SQL 中,两个表都连接在一起,我想将它们分开。
另一种方法是使用与上面相同的方法,但将 JOINED 更改为 TABLE_PER_CLASS。这不起作用,因为当我查询MyClass时,SQL 中的两个表上都有 UNION ALL 。
我也尝试使用@org.hibernate.annotations.Entity(polymorphism = PolymorphismType.EXPLICIT)and@org.hibernate.annotations.Entity(polymorphism = PolymorphismType.IMPLICIT)但没有效果。
所以我的问题是是否有办法在 Hibernate 中映射它。有什么建议么?
谢谢!
使用休眠3.6.1
看来您想将这两个实体视为完全不相关,除了它们具有共同的字段之外。它并不是真正的继承关系,因为当您搜索 MyClass 时,您不希望找到 MySubclass 实例,尽管 MySubClass 实例是您设计中的 MyClass 实例。
因此,最好的解决方案可能是使用MappedSuperclass包含公共字段和方法的(请参阅第 2.2.4.4 章),并创建两个完全独立的实体来扩展此映射的超类。
| 归档时间: |
|
| 查看次数: |
3741 次 |
| 最近记录: |