由于与数据库复制相关的原因,我需要我的数据库中的所有表都有主键。
我的应用程序中的一些实体定义如下:
<class name="Item" table="ITEM">
<id name="id" column="ITEM_ID"/>
<property name="name" column="NAME" />
<set name="images" table="ITEM_IMAGE">
<key column="ITEM_ID"/>
<element type="string" column="FILENAME" not-null="true"/>
</set>
</class>
根据Java Persistence with Hibernate 一书(2006 年 11 月)。第 6 章,第 244 页
“一个集合不能包含重复的元素,因此 ITEM_IMAGE 集合表的主键是声明中两列的组合:ITEM_ID 和 FILENAME。”
问题是,这种映射集合的方式实际上创建了一个没有主键的集合表。(只有父实体表的外键)
有没有办法使用键元素集映射并强制休眠以两列的复合主键创建集合表?(我对将集合映射更改为键/多对多不感兴趣,这将创建另一个子实体表)有人可以解释这种行为吗?
谢谢!