说实话我还不太明白saveOrUpdate到底是什么意思好像是没有记录的时候记save,有记录的时候就update,不知是不是这样但他以什么来判断是否有记录呢,ID?

解决方案 »

  1.   

    一般hibernate会根据你传入的对象判断如果该对象对应的hbm。xml文件对应的标识列为空值则调用save方法反之好像就是update方法了!希望对你有用!
      

  2.   

    Hibernate 的 saveOrUpdate() 方法会根据实体对象的 OID (可以理解成实体主键) 是否合法来决定是调用
     save() 还是 update() 方法; 
    public class Person{ private int id;}当 Person 对象被 new 出来的时候, id = 0; 这是默认值, 这个时候 Hibernate 会根据你的
    <id  unsave-value="0" > 属性来判断这个集合是瞬时状态的还是游离状态的, 这个属性的默认值
    为 0, 这也就是为什么上述 Person 对象 new 出来以后 Hibernate 会认为其是瞬时对象, 如果你
    手动此属性改为 <id unsave-value="1" > 那么此 new 出来的 Person 对象将会被 Hibernate 认作
    是游离对象, 这并不是期望的, 所以这个属性最好保持默认;