日期:2014-05-19  浏览次数:20584 次

hibernate 存入数据时会覆盖掉原来外键中的数据
User 与Group 是manytoone 的关系, User 中有个private Group group 参考Group 的id

@manyToOne
public Group getGroup()
{
  return this.group;
}

-----存入User

public void testUserSave1()
{
  Group g = new Group();
  g.setName("g1");
  User u1 = new User();
  u1.setName("u1");
  u1.setGroup(g);
   
  //调用Service 这里结合了spring 最终利用的是hibernateTemplate 
   
  hibernateTemplate.save(u1);

}

这样存入u1后 在Group 这张表里生成了一条记录(id ,name):(1,g1)

再存入u2
public void testUserSave2()
{
  Group g = new Group();
  g.setId(1);
  User u2 = new User();
  u2.setName("u2");
  u2.setGroup(g);
  
  hibernateTemplate.save(u2)
}

这样存入u2后 Group表中id为1 的记录(id,name)变为:(1,null);
name 为null了;

本来是想要存入u2 同样让其属于g1 这组,但是这样存确把原来的id=1这条记录给覆盖了

求帮忙,怎样做不覆盖掉原来的记录


------解决方案--------------------
映射文件的id有没有设置成自增啊