Java 如何通过注释映射分离的集合(列表、集合)或使用Hibernate进行映射
我知道,有一种通过XML映射地图的方法: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
<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)你能帮我写一个完整的例子吗?