求Java大神,关于hibernate多对多关系的一些疑问~
我在百度上、谷歌上均查不到相关资料,就是关于多对多关联如何插入数据的问题,现在有两张表,A表和B表建立多对多关联后生成中间表A_B表,A_B表中放有A、B两表的主键aid...
我在百度上、谷歌上均查不到相关资料,就是关于多对多关联如何插入数据的问题,现在有两张表,A表和B表建立多对多关联后生成中间表A_B表,A_B表中放有A、B两表的主键aid和bid以及A_B表的主键abid,现在我想利用这个关联插入一些数据,比如我想在A_B表中插入记录,让A表中的某个数据多出对应的一个B表中的数据,该如何做?刚接触,很纠结,快烦死了,还有就是我说的这个多对多关联是单向的。。。。。
展开
2个回答
展开全部
你只要在配置里面配置好了多对多就好办..后台添加数据就行了...不要把问题复杂化了...
追问
是不是不用写中间表的set和get方法了?也不用写中间表的hbm配置文件了吗?如果是这样的话,那么在后台怎样写啊?我用的是hibernateTemplate方法,该调用哪个方法来实现呢?是save吗?我问了那么多人,目前就你的答案最靠谱了(其他的都是复制粘贴,而且驴唇不对马嘴)
追答
hibernate many-to-many设置好a和b的关联后,直接调用save方法,
在A和B的分别要有对应的的集合:
在A类中有B类的集合:private Set B=new hashset(0);并提供get和set方法,
在B类中有A类的集合:private Set A=new hashset(0);并提供get和set方法。
首先你在 A.hbm.xml(这里的xml文件我只是假设你生成的)中配置:
然后再B.hbm.xml(这里的xml文件我只是假设你生成的)中配置:
至于中间表的话是不需要配置了的.
不知道你看懂了没,在多对多中不需要配置任何lazy和casecade,也不需要中间表的关系。你只需要把多对多的关系配置好就ok了,希望对你有所帮助.
展开全部
1:hql语句:from A where aid = 1
整体程序片段:
A a = (A)Dao.query("from A where aid = 1");
Set<B> set = A.getB();
2:A_B这个类是不存在的,这个我应该怎么解释呢。。。一会补充
现在你创建一个A类,一个B类,通过hibernate配置好多对多,ok,你会在数据库中生成一个桥表(如果配置错误,会产生两个桥表,这个桥表在java中不是真实存在的,仅仅是hibernate用来存储A,B关系的表,所以model中不要写A_B,更别说setter和getter)不知道这么说能不能明白。。。
请采纳答案,支持我一下。
整体程序片段:
A a = (A)Dao.query("from A where aid = 1");
Set<B> set = A.getB();
2:A_B这个类是不存在的,这个我应该怎么解释呢。。。一会补充
现在你创建一个A类,一个B类,通过hibernate配置好多对多,ok,你会在数据库中生成一个桥表(如果配置错误,会产生两个桥表,这个桥表在java中不是真实存在的,仅仅是hibernate用来存储A,B关系的表,所以model中不要写A_B,更别说setter和getter)不知道这么说能不能明白。。。
请采纳答案,支持我一下。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询