java - Hibernate 两表一对象

标签 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 的外键

知道我应该怎么做吗?

我不能改变表结构,我只能在 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/

相关文章:

Java并发比连续慢?

java - Jaxb Moxy 与 Hibernate?在 Jboss 6.1 上

hibernate - GORM/hibernate :将标准加入(转换)到属性(property)的 child 的准则

asp.net - 奇怪的错误 : [ArgumentOutOfRangeException: 'count' must be non-negative

java - 自定义构造函数 : Apache Cayenne 3. 2M

java - 为什么 ExecutorService.shutdownNow 方法不能停止线程

java - 如何计算两次按钮单击之间的时间以及如何将结果设置为 TextView?

java - Junit 使用 groovy 预期异常

java - 无法关闭 hibernate 信息日志记录

php - 如何保存 Doctrine2 实体