2016-10-04 70 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

您是否真的为我写完整示例? –