【发布时间】:2012-01-10 05:57:04
【问题描述】:
所以我有这个结构。
表 1 ID 字段1 字段2 鉴别器值
表2 ID 字段3
表 3 ID 字段4
我想使用继承如下。
@DiscriminatorColumn("discriminatorValue")
@Entity
@Inheritance
@Table("Table1")
public class T1 {
@Id
private int id;
...
private String field1;
..
private String field2;
..
}
@SecondaryTable(name = "Table2", pkJoinColumns = {@PrimaryKeyJoinColumn(name = "id", referencedColumnName = "id")})
@DiscriminatorValue("tbl2")
@Entity
public class T2 extends T1 {
private String field3;
..
}
@SecondaryTable(name = "Table3", pkJoinColumns = {@PrimaryKeyJoinColumn(name = "id", referencedColumnName = "id")})
@DiscriminatorValue("tbl3")
@Entity
public class T3 extends T2 {
private String field4;
..
}
我发现当我尝试保存 T3 对象时,不会包含 T2 中的辅助表。
谢谢
【问题讨论】:
-
它适用于 T2 吗? T3 会保存 T1 而不是 T2 吗?
-
是的,除了因为 T2 不存在,T2 和 T3 上的 id 字段之间的外键链接失败。所以生成的sql看起来像这样。插入 T1(...) 插入 T3(...) 并没有生成 T2 插入。
标签: java hibernate inheritance jpa annotations