2011-03-30 48 views
0

我想在Acount和Record之間創建@ManyToOne映射。一個帳戶可以有很多記錄。但是我不想在Record類中添加Account域,反之亦然。你能幫我在註釋中描述這個嗎?休眠。通過編號的外鍵映射

@Entity 
public class Account { 

    @Id 
    ... getId(); 
} 

@Entity 
public class Record { 

    @Id 
    ... getId(); 

    @????? 
    ... getAccountId(); 

} 
+0

如果你不希望添加一個實際的帳戶或記錄字段,那麼什麼是映射點?如果你想要找回的是一個ID,那麼你不需要任何映射。只需將'accountId'或'recordId'作爲常規列。 – 2011-03-30 13:41:05

+0

外鍵怎麼樣? – 2011-03-30 13:45:29

+0

你能澄清一下嗎? 'accountId'或'recordId' _is_是外鍵。 – 2011-03-30 13:51:29

回答

2

映射實體的表是這樣的Hibernate的通常工作,如果你不想在錄製賬戶類,你可以簡單地定義帳戶ID只要(或者int取其OK),並沒有標註它,除非你需要一個不同的列名。 但我建議不要這樣做。

+0

在這種情況下,hibernate不會自動創建外鍵。這是個問題。 – 2011-03-30 13:44:49

+3

我想沒有辦法像你想的那樣去做;在Hibernate中定義一個外鍵你需要一個目標實體 – 2011-03-30 13:50:23

0

如果您不想將外鍵約束添加到任何表中,則可以使用允許您創建關係的約束創建單獨的表。

accountId | recordId 
-------------------- 
1  | 2 
1  | 3 
2  | 4 

隨着JPA ...

@ManyToOne 
@JoinColumn(table=TABLE_NAME_ABOVE,name="accountId") 
public Account getAccount(){ ... } 
+0

我想要這個外鍵。通過單獨的表格進行關係......看起來很糟糕的設計。 – 2011-03-30 13:51:14