2016-10-04 77 views
2

我知道與Hibernate映射,不存在通過XML映射地圖的方式:如何映射分離的集合(list,集)或通過註釋

<set name="images" 
table="ITEM_IMAGE" 
order-by="IMAGENAME asc"> 
<key column="ITEM_ID"/> 
<composite-element class="Image"> 
<property name="name" column="IMAGENAME" not-null="true"/> 
<property name="filename" column="FILENAME" not-null="true"/> 
<property name="sizeX" column="SIZEX" not-null="true"/> 
<property name="sizeY" column="SIZEY" not-null="true"/> 
</composite-element> 
</set> 

有沒有辦法做到通過註釋同樣的事情映射,以及如何將其保存到單獨的表中?

問了很多!

回答

1

對於組合值或基本類型應該幾乎相同,首先需要告訴休眠我們正在映射到集合 然後指定應該保存地圖的表的名稱以及當前的連接列實體,然後您指定密鑰。

  @Entity 
     public class Item { 
       @Id 
       @GeneratedValue(strategy = GenerationType.AUTO) 
       @Column(name = "Item_ID") 
       private Long itemId; 

       @ElementCollection 
       @CollectionTable(name="ITEM_IMAGE",  [email protected](name="ITEM_ID")) 
       @MapKeyColumn(name="ITEM_ID") 
       private Map<String, Image> contacts = new HashMap<String, Image>(); 
       } 

       @Embeddable 
       public class Image { 
       //Specify your composite attributes with the column name for each 
       } 

希望我沒有錯過任何東西

+0

謝謝,但我應該怎麼堅持這個地圖到我的數據庫? 我應該把它放進某個實體,還是有辦法以其他方式堅持下去? –

+0

它應該在具有此列表的實體中(具有主鍵ITEM_ID的實體) –

+0

您是否真的爲我寫完整示例? –