0
我想創建一個可以存儲值列表的hibernate表。我正在做的是這樣的:帶列表的休眠列
@Column(name = "userHobbies")
@ElementCollection(targetClass = String.class)
@CollectionTable(schema = "school", name = "hobby", joinColumns = @JoinColumn(name = "id"))
private List<String> userHobbies= null;
在表用戶我沒有看到一列「userHobbies」。桌子的愛好雖然是空的,但是被創造出來。任何人都可以提出一些關於如何處理這類案件的建議嗎?
編輯:
代碼中插入新記錄用戶與愛好:
ArrayList<String> hobbies= new ArrayList<String>();
hobbies.add(football);
hobbies.add(soccer);
User user = new User();
user.setName("ben");
user.setEmail("[email protected]");
user.setUserHobbies(hobbies);
getDAO().makePersistent(user);
除userHobbies其他所有字段都是正確保存。
只是想確保我的問題很清楚,有一個名爲User的表,其中有一個名爲userHobbies的列,其中包含用戶的業餘愛好列表。 @collectionTable創建一個表愛好來將興趣愛好與他們的ID進行映射。所以我的問題是爲什麼你建議userHobbies包含一個愛好?我想存儲一份愛好列表。 – 2013-04-23 20:43:55
假設用戶1有足球和籃球作爲興趣愛好。用戶表中的用戶1將有一行,興趣表中有兩行用於興趣愛好。第一行將包含(1,'足球'),第二行將包含(1,'籃球')。這是傳統的關係數據庫設計。您沒有名爲userHobbies的列的表User。您有一個名爲User的hibernate實體,其集合爲userHobbies。你定義的映射描述了生成的模式。 – 2013-04-23 20:48:54
哦,好的,謝謝。但是,當我將值插入到用戶表中時,所有值都正確存儲,但愛好表爲空。你能建議它爲什麼可以嗎? – 2013-04-23 20:52:46