在JPA

2014-12-13 35 views
0
堅持一個地圖

我有以下類在JPA

class Category { 
    Long id; 
} 
class Question { 
    Long id; 

    @OneToOne (cascade=CascadeType.ALL) 
    Category category; 
} 
class Test { 
    Long id;  
    Map<Category, Long> splitUp; 
} 

這些都是我的班的部分版本,我已經註釋的類別和Quesiton類,但其在測試類的麻煩標註地圖「splitUp」 。我想在這方面提供一些幫助。

+0

它已經在這裏回答:http://stackoverflow.com/questions/3393649/storing-a-mapstring-string-using-jpa – 2014-12-13 14:20:20

+1

@OlivierMeurice它沒有在那裏回答。我有一個關鍵字哪個類型類別,而不是字符串人際關係註釋必須額外添加這是我有麻煩 – AbrahamDaniel 2014-12-13 16:18:16

+0

請參閱此https://stackoverflow.com/questions/11325059/mapping-map-with-an-entity -a-key-in-jpa,但正如答案所示,JPA沒有正確處理實體密鑰(和非實體值),所以是hacky。它也堅持讓你有一個連接表,然而如果能夠將鍵值作爲關鍵實體中的一個字段也是很好的(不知道你是否打算這樣做,但只是提及它),而這個ElementCollection路由不會不允許的。 – 2014-12-13 18:00:24

回答

1
class Test { 
    Long id;  

    @ElementCollection 
    @JoinTable(name = "CATEGORY_JOIN_TABLE", joinColumns = @JoinColumn(name = "category_join_table_id_column")) 
    @MapKeyJoinColumn (name = "category_id") 
    @Column(name = "id") 
    Map<Category, Long> splitUp; 
} 

這應該有效。