Hibernate两个表和一个对象

时间:2010-10-06 20:06:25

标签: java hibernate orm jpa

我有这个想法:

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的外键改为table1

知道我该怎么做?

我无法更改表结构,我只能在java中创建新类。

2 个答案:

答案 0 :(得分:3)

id中的Table2列(我猜这是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 Wikibook
  • JPA 1.0规范
    • 第9.1.2节“SecondaryTable注释”
    • 第9.1.32节“PrimaryKeyJoinColumn注释”

答案 1 :(得分:2)

您可以使用@SecondaryTable @SecondaryTable annotation problem吗?