免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1195 | 回复: 1
打印 上一主题 下一主题

[Veritas NBU] 多对多关联映射(单向) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-03-16 15:46 |只看该作者 |倒序浏览
多对多关联映射(单向)










多对多其实是个很复杂的关系,hibernate在进行处理的时候借助中间表或者中间类。中间表是在映射文件的关联标签(比如集合标签)中由table属性指定的由hibernate自动生成的表,它只有两个字段,分别由和标签的table属性指定,作为外键分别用来指向关联双方表的主键。中间类就是把我们的中间表抽象生成一个实体类,在映射的时候分别和两个关联类构成一对多的关系,即演变成两个一对多来处理。 我习惯使用中间表的方式。 1.实体模型:  2.关系模型:  3.实体类: Role.java public class Role { private Integer id; private String name; //一系列的setter.getter方法 @Override public String toString() { return \"Role:\" + name; } } Player.java public class Player { private Integer id; private String name; private Set roles; //一系列的setter.getter方法 @Override public String toString() { return \"layer:\" + name; } } 4.映射文件: Role.hbm.xml Player.hbm.xml 5.hibernate配置文件: 参见上一篇。 6.测试方法: public static void main(String[] args) { Session session = HibernateUtils.getSession(); Transaction t = session.beginTransaction(); try { /** * 测试插入数据 */ /* Role role1=new Role(); role1.setName(\"后卫\"; Role role2=new Role(); role2.setName(\"前锋\"; Role role3=new Role(); role3.setName(\"中锋\"; Player player1=new Player(); player1.setName(\"姚明\"; Set roles1=new HashSet(); roles1.add(role3); player1.setRoles(roles1); Player player2=new Player(); player2.setName(\"詹姆斯\"; Set roles2=new HashSet(); roles2.add(role1); roles2.add(role2); roles2.add(role3); player2.setRoles(roles2); //能正确保存.每保存player后,都要级联保存它的role,并且级联插入中间表记录. session.save(player1); session.save(player2);*/ /** * 测试加载数据 */ Player player=(Player)session.load(Player.class, 1); System.out.println(player); for(Iterator iterator=player.getRoles().iterator();iterator.hasNext(){ System.out.println(iterator.next()); } t.commit(); } catch (HibernateException e) { e.printStackTrace(); t.rollback(); } finally { HibernateUtils.closeSession(session); } } }

论坛徽章:
0
2 [报告]
发表于 2012-03-16 15:46 |只看该作者
谢谢分享
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP