我有这种情况:
Table1:
tab_id
field11
field12
Table2
id
tab_id
field21
field22
例如,我必须在这两个表上创建一个对象:
object:
@Id
tabId
@Colummn(name="field11")
field11
@Colummn(name="field12")
field12
@Colummn(name="field21")
field21
当我更新 field21 时,table2 应该更新这个字段,但是 table1 没有关于 table2 的任何信息,只有 table2 有 table1 的外键
知道我应该怎么做吗?
我不能改变表结构,我只能在 java 中创建新类。
最佳答案
Table2
中的 id
列(我猜是 PK)很烦人。但是,如果您可以在插入时生成它,则使用 @SecondaryTable
映射两个表应该可行:
@Entity
@Table(name="TABLE1")
@SecondaryTable(name="TABLE2", pkJoinColumns =
@PrimaryKeyJoinColumn(name="TAB_ID", referencedColumnName="TAB_ID")
)
public class MyEntity {
...
@Id @Column(name="TAB_ID")
private Long tabId;
@Column(name="FIELD11")
private int field11;
@Column(name="FIELD12")
private int field12;
@Column(name="FIELD21", table="TABLE2")
private int field21;
...
}
如果不能,恐怕您将不得不映射 2 个类(具有 OneToOne
关系)。
引用资料
- JPA 维基百科
- JPA 1.0 规范
- 第 9.1.2 节“SecondaryTable 注释”
- 第 9.1.32 节“PrimaryKeyJoinColumn 注释”
关于java - Hibernate 两表一对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3876418/