没人么?id生成方式设置为native或则increment都报错。但assigned就不报错,或者用merge()就不报错,为什么呢

解决方案 »

  1.   

    native跟Increment都是数据库自增为什么还要给User u2实例setId,能行?
      

  2.   

    当我们使用update的时候,执行完成后,我们提供的对象A的状态变成持久化状态
    但当我们使用merge的时候,执行完成,我们提供的对象A还是脱管状态,hibernate或者new了一个B,或者检索到一个持久对象,并把我们提供的对象A的所有的值拷贝到这个B,执行完成后B是持久状态,而我们提供的A还是托管状态。
    看下
      

  3.   

    idertifier 列不用程序配分
    merge()看官方文档
     User u2=getUser(u1.getId());
            u2.setId(2);
    没有必要
      

  4.   

    saveOrUpdate后的对象会纳入session的管理,对象的状态会跟数据库同步,再次查询该对象会直接从session中取,merge后的对象不会纳入session的管理,再次查询该对象还是会从数据库中取。
      

  5.   

    在调用saveOrUpdate(Object)以后,Object会更新为update以后的对象,但是用merge的话Object还是没有更新之前的对象。saveOrUpdate必须归于session,merge不是的
     
      

  6.   

    native跟Increment都是数据库自增 为什么还要给User u2实例setId,能行?
      

  7.   


    native和Increment都是数据库自增 。。不能在SetID()了。。
      

  8.   

    主要还是关于session,saveOrUpdate是归于session中的,所有的事物都要session来处理