我在hibernate(MySQL数据库存储)中有两个实体,它们是相关的多对多的。 这些是“项目”和“类别”。休眠多对多关系只保存连接表中的关联
项目< --->类别
我有一个连接表名为“project_category”加入这些实体存储在“项目”和“类别”表。连接表仅存储这些表中的主键。这些键是“project_id”和“category_id”。
我有固定数量的类别。类别表已经填充了可能的项目类别列表。当新项目创建时,它属于一个或多个类别,它存储在
在我的“Project”类的映射中,我使用“project_category”表指定了多个从Project到Category的导航,如下所示:
<set name="categories" table="project_category" fetch="join" cascade="persist">
<key column="project_Id" />
<many-to-many column="category_Id" class="Category"/>
</set>
这是我想达到什么..
我想保存的项目和关联类(在这里我不想创建任何新的分类只是我PROJECT_ID的CATEGORY_ID关联) 。类别已经存在,我希望在保存新项目时使用它们。
在代码中,我创建了一个所需类别的集合(在类别表中有许多类别),并添加到Project实例并尝试使用休眠保存项目。现在期待project_category包含项目和类别的关联。我正在观察,当保存项目,休眠试图分类(这不是我想要的,因为我已经有类别创建 - 我想只是将它与我的新项目)。
什么样的映射需要达到上述目标?
我看过这篇很好的文章,但在这里作者创建了两个实体,而不是使用已经创建的实体。 http://technicalmumbojumbo.wordpress.com/2007/09/25/investigating-hibernate-associations-many-to-many/
感谢您的回答。实际上,问题是使用.persist()调用。我将它改为.save(),它工作。不知道它为什么试图插入到Categories表中。 – Anil 2012-02-23 19:44:23
你有一个级联=坚持你的映射,但没有级联=保存。 – 2012-02-23 19:46:45