Hibernate一对多关系问题

来源:百度知道 编辑:UC知道 时间:2024/07/03 02:19:29
在学习Hibernate时遇到了这个问题:
....
说明:
Group表和User表 id都为native,且User中加入<many-to-one name="group" column="G_id"/>
即,多对一关系
........
Group group = new Group();
group.setName("JAVA专区");

//session.save(group);//这是第6行,将group转换为持久对象

for(int i=0;i<10;i++){
User user = new User();
user.setName("User_"+i);

//建立对象之间的关系
user.setGroup(group);

//因为user引用了Transient对象(group),所以抛出了TransientObjectException
//持久对象不能引用瞬时对象
session.save(user);

}
//的确这个是抛出了异常,好记住了,持久对象不能引用瞬时对象!
//如果去掉第6行,程序也就对了!能够理解!
//但下边的不解了!
....
....

Group g = new Group();
g.setId(1); //这里应该不让setId吧,但我这样做出没有出错!
//这个g是瞬时对象吧

for (int i = 10; i < 20; i++) {
User u = new User();
u.setUsername("user_" + i);

u.setGroup(g);
session.save(u);
}
但为什么它能正常运行呢!
.......
应该是

我没运行过,你下面那个应该对的!!

u.setGroup(g); 保存的不是Group对象,而是对应的Group的ID,你下面的做法等于把一个Group的值,也就是ID给了User,只要这个ID确实存在在Group表。就能运行成功!!否则会抛出异常!

你xml写了么

你的<many-to-one> 中怎么没有class字段啊?
需要写类的地址啊