hibernate学习笔记第5讲-多对一关联映射many-to-one
?
session.beginTransaction();
???????????????????????????
??????????????????????????? Group group = newGroup();
??????????????????????????? group.setName("尚学堂");
???????????????????????????
??????????????????????????? User user1 = newUser();
??????????????????????????? user1.setName("菜10");
??????????????????????????? user1.setGroup(group);
???????????????????????????
??????????????????????????? User user2 = newUser();
??????????????????????????? user2.setName("容祖儿");
??????????????????????????? user2.setGroup(group);
???????????????????????????
??????????????????????????? //不能成功保存,抛出TransientObjectException异常
??????????????????????????? //因为还没有保存Group,此时为Transient状态,oid没有分配值
??????????????????????????? //persistent状态的对象是不能引用transient状态的对象的
??????????????????????????? //关联关系配置中cascade =‘none’
??????????????????????????? session.save(user1);
??????????????????????????? session.save(user2);
??????????????????????????? session.getTransaction().commit();
?
存储_例子2:
??????????????????????????? session.beginTransaction();
???????????????????????????
??????????????????????????? Group group = newGroup();
??????????????????????????? group.setName("尚学堂");
?????????????????? ???????? //此时已保存到数据库中,变成persistent状态,但是在数据库中查不到,跟数据库的隔离级别有关系。
??????????????????????????? session.save(group);
???????????????????????????
??????????????????????????? User user1 = newUser();
??????????????????????????? user1.setName("菜10");
??????????????????????????? user1.setGroup(group);
???????????????????????????
??????????????????????????? User user2 = newUser();
??????????????????????????? user2.setName("容祖儿");
??????????????????????????? user2.setGroup(group);
???????????????????????????
??????????????????????????? //可以正确存储
??????????????????????????? session.save(user1);
??????????????????????????? session.save(user2);
??????????????????????????? session.getTransaction().commit();
当cascade? != ‘none‘时,是级联操作,在存user1时会先把group存了。