Java 如何通过注释映射分离的集合(列表、集合)或使用Hibernate进行映射

Java 如何通过注释映射分离的集合(列表、集合)或使用Hibernate进行映射,java,hibernate,Java,Hibernate,我知道,有一种通过XML映射地图的方法: <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

我知道,有一种通过XML映射地图的方法:

 <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>

有没有办法通过注释映射来做同样的事情,以及如何将其持久化到单独的表中


太多了

对于复合值或基本类型,它应该几乎相同,首先您需要告诉hibernate我们正在映射到一个集合 然后指定表的名称,该表应包含映射和当前实体的联接列,然后指定键

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

              @ElementCollection
              @CollectionTable(name="ITEM_IMAGE",     joinColumns=@JoinColumn(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
              }
@实体
公共类项目{
@身份证
@GeneratedValue(策略=GenerationType.AUTO)
@列(name=“Item\u ID”)
私有长项目ID;
@元素集合
@CollectionTable(name=“ITEM\u IMAGE”,joinColumns=@JoinColumn(name=“ITEM\u ID”))
@MapKeyColumn(name=“ITEM\u ID”)
私有映射联系人=新的HashMap();
}
@可嵌入
公众阶级形象{
//使用每个属性的列名指定复合属性
}

希望我没有错过任何东西

谢谢,但是我应该如何将此地图保存到我的数据库中?我应该把它放在某个实体中,还是有其他方法来保持它?它应该放在有这个列表的实体中,(主键项的enity_ID)你能帮我写一个完整的例子吗?