2012-03-31 94 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; 
    ... 
} 

}