2012-03-31 93 views
3

我想在Hibernate中运行一个简单的JoinTable操作,它给了我适合。我有一张表,表示一个名为“Person”的实体。我有另一张表示社会安全号码的表格(例如)。我想将社会安全号码作为String(它是VARCHAR2)作为PersonEntity上的一个属性。没有下面的代码PersonEntity工作得很好。这是我想要做的。休眠简单JoinTable不使用实体

@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创建单独的实体...请帮助!谢谢

回答

3

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

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

在你的情况类似下面的工作:

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

}