不使用实体的Hibernate简单JoinTable

时间:2012-03-31 17:57:51

标签: hibernate join jointable

我正在尝试在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

没有此代码,一切都很好。只要我在整个实体中添加它就是null。我不想为PERSON_ID_X_SSN制作单独的实体......请帮忙!感谢

1 个答案:

答案 0 :(得分:4)

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

在这种情况下,实体之间没有关系,但是应该持久化到两个表的一个实体。 @SecondaryTable是为此目的服务的注释。想法是为实体指定辅助表(或通过@SecondaryTables多个),并且当使用除primary之外的表来保持属性时,在@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;
  ...
}

}