Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 休眠两个表和一个对象_Java_Hibernate_Orm_Jpa - Fatal编程技术网

Java 休眠两个表和一个对象

Java 休眠两个表和一个对象,java,hibernate,orm,jpa,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应该更新此字段,但ta

我有这样的情况:

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创建新类

你能使用
@SecondaryTable
吗?

表2中的
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;
    ...
}
如果不能,恐怕您必须映射两个类(使用
OneToOne
关系)

工具书类
  • JPA维基百科
  • JPA1.0规范
    • 第9.1.2节“二次表注释”
    • 第9.1.32节“PrimaryKeyJoin列注释”