<class name="TbPMplannounce" table="TB_P_MPLANNOUNCE"  dynamic-insert="true" dynamic-update="true">
        <id name="monthC" type="string" column ="MONTH_C" length="6" >
            <generator class="assigned" />
        </id>
        <property name="monthdescC" type="string" column ="MONTHDESC_C" length="10" />
 </class>

解决方案 »

  1.   

    主键值是否重复!saveorupdate做如下事情:
    如果对象已经在本session中持久化了,不做任何事 如果另一个与本session关联的对象拥有相同的持久化标识(identifier),抛出一个异常 如果对象没有持久化标识(identifier)属性,对其调用save() 如果对象的持久标识(identifier)表明其是一个新实例化的对象,对其调用save() 如果对象是附带版本信息的(通过<version>或<timestamp>) 并且版本属性的值表明其是一个新实例化的对象,save()它。 否则update() 这个对象 
      

  2.   

    如果对象没有持久化标识(identifier)属性,对其调用save()   ////如果对象没有持久化标识(identifier)属性  怎么判断我调用 tbPMplannounceService.saveOrUpdate(entity);  只能update, 为啥不能插入
      

  3.   

    Session.saveOrUpdate() Session.merge()   //hibernate怎么没有merge
      

  4.   

    Session.merge()  //hibernate2怎么没有merge 
      

  5.   

    2楼的解答是正确的。你不是你session已经有了entity的持久话对象,比如你执行saveOrUpdate()前已经执行过load(),get(),find()等
      

  6.   

    2楼的意思你有ID这个标识,那么就是执行UPDATE,反之就是INSERT
      

  7.   

    把调用getHibernateTemplate().saveOrUpdate(entity);的代码贴出来看看。