【问题标题】:Hibernate two tables and one object休眠两张表和一个对象
【发布时间】:2010-10-06 20:06:24
【问题描述】:

我有这种情况:

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

【问题讨论】:

    标签: java hibernate orm jpa


    【解决方案1】:

    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 节“辅助表注释”
      • 第 9.1.32 节“PrimaryKeyJoinColumn 注释”

    【讨论】:

      【解决方案2】:

      你能用@SecondaryTable@SecondaryTable annotation problem吗?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-02-06
        • 2016-02-04
        • 1970-01-01
        • 2021-11-29
        • 2017-03-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多