【问题标题】:Hibernate Simple JoinTable Without Using Entity在不使用实体的情况下休眠简单的 JoinTable
【发布时间】:2012-03-31 17:57:50
【问题描述】:

我正在尝试在 Hibernate 中运行一个简单的 JoinTable 操作,它让我很适应。我有一张表,它代表一个名为“Person”的实体。我有另一个代表社会安全号码的表格(例如)。我希望将社会安全号码作为字符串(它是 VARCHAR2)作为 PersonEntity 上的一个属性。如果没有以下代码,PersonEntity 就可以正常工作。这就是我想要做的。

@JoinTable(name = "PERSON_ID_X_SSN", 
               joinColumns = {@JoinColumn(name = "PERSON_ID")})
    @Column(name="SSN", nullable=false, updatable=false)
    private String social;

PERSON_ID_X_SSN 表很简单:

PERSON_ID, SSN

没有这段代码,一切都很好。一旦我将它添加到整个实体中,它就为空。我不希望为 PERSON_ID_X_SSN 创建一个单独的实体...请帮助!谢谢

【问题讨论】:

    标签: hibernate join jointable


    【解决方案1】:

    @JoinTable 用于指定用于保持实体之间关系的表。

    在这种情况下,实体之间没有关系,而是应该将一个实体持久化到两个表中。 @SecondaryTable 是服务于此目的的注释。想法是为实体指定辅助表(或通过@SecondaryTables 指定多个表),并在应该使用主表以外的表来保存属性时,在@Column 注释中明确提及表的名称。

    在您的情况下,以下内容将起作用:

    @Entity
    @Table(name="CUSTOMER")
    @SecondaryTable(
      name="PERSON_ID_X_SSN", 
      pkJoinColumns=@PrimaryKeyJoinColumn(name="PERSON_ID"))
    public class Person {
      @Column(table="PERSON_ID_X_SSN", name="SSN")
      private String social;
      ...
    }
    

    }

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-03-22
      • 1970-01-01
      • 2015-12-26
      • 1970-01-01
      • 2022-11-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多