SSH中hibernate双向多对多的添加问题,如何只在中间表插入数据?

Cool小发 2013-07-29 04:07:50
areas(表一) plants(表2) areas_plants(关联表)用的mysql数据库
3张表的id在配置文件中都配置的native,
添加areas和plants的时候会自动把areas_id和plants_id添加到关联表中。
我添加areas和plants不想让数据中出现重复记录,但是关联表中我想体现出areas和plants的多对多的关系。请牛人回答我该怎么设计。例如:areas中有a1,a2,a3这三条记录,plants中有p1,p2,p3这三条记录,我想让areas_plants中有9条记录(a1,p1 a1,p2 a1,p3 此处省略其他6种)。看明白的回复,有满意答案马上结贴。
...全文
392 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Miracle佐 2015-04-20
  • 打赏
  • 举报
回复
areas和plants这两个实体类,哪个是主动的一方, 如果plants是主动的一方,那就在areas的hibernate配置文件中配置<set name="" table="" inverse="true">让areas放弃对外键的维护权。
Cool小发 2013-08-04
  • 打赏
  • 举报
回复
引用 3 楼 shxt_xiaozhi 的回复:
两边各一对 <set casecade=""> <key/> <many-to-many/> </set> 中间表是自动生成的
你的这种方式没有中间的实体表你怎么查···哈哈
Cool小发 2013-08-02
  • 打赏
  • 举报
回复
别沉了啊!!!!
Cool小发 2013-07-30
  • 打赏
  • 举报
回复
等于木有说~~关于实体表中重复添加的问题用java代码控制还是hibernate有自己的机制可以控制?请各位盆友从这方面考虑啊。
且活且珍惜 2013-07-30
  • 打赏
  • 举报
回复
两边各一对 <set casecade=""> <key/> <many-to-many/> </set> 中间表是自动生成的
Cool小发 2013-07-29
  • 打赏
  • 举报
回复
我的两个实体里没有对方的集合,没有<many-to-many>这个标签,而是把areas_plants放到了两端的集合里,然后转化成了两个一对多,多的一方是areas_plants这个表,在两个实体的映射xml中设置的是<one-to-many>对应的是areas_plants表里的两个实体的id;然后实体xml设置了级联操作,inverse="false"也是在两个实体映射xml里设置的,保存的时候保存两个实体,因为设置了级联所以实体id会自动保存到areas_plants里,我在数据库里手动添加了我上面举的例子,用hql能查出来,9条记录没问题,我不知道我这种方式是不是错了。苦恼ing。
xiaofanac66 2013-07-29
  • 打赏
  • 举报
回复
首先你确定哪一方是关系维护段吗? 这两个实体里都肯定有对方的集合,你对关系维护段操作集合的时候就会自动添加中间表的值。

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧