我在做修改保存一个对象时,为啥总是重新插入新的记录,而不是修改呢?
附上代码:
修改的方法
public void modifyItem(Item item)
{
Session session = null;

try
{
session = hibernateutils.getSession();
session.beginTransaction();

session.update(item);

session.getTransaction().commit(); }catch(Exception ex)
{
session.getTransaction().rollback();
ex.printStackTrace();
}finally
{
hibernateutils.closeSession(session);
}
}这是action public String modifyItem() throws Exception
{
ItemManage itemmanage = ItemManage.getInstance(); //获得服务类的实例
itemmanage.modifyItem(item);
page = itemmanage.searchAllItems(1, null);
return SUCCESS;
}用的Struts2 的框架。
期待回复,在线等待。。

解决方案 »

  1.   

    很有可能你的item没有获取到相应的主键
      

  2.   

    在item 里面存在多对一的关系,每次在更新保存多的一端,而一的一端都重新插入了新的记录
      

  3.   

    应该是你先查出你要修改的那条记录,得到一个实例A,然后A.set..(),再调用修改方法modifyItem(item)
      

  4.   

    把修改的内容set到原来的对象里面去然后.update()不就OK了么
      

  5.   

     没有看到全部代码,估计是你的那个item是detached Entity,所以Hibernate每次都在数据库里弄个新的。你试试把Load Item entity 和modify的代码都放到一个transactionsession = hibernateutils.getSession(); 
    session.beginTransaction(); 
    // load item 
    // modify item
    session.update(item); session.getTransaction().commit(); 
      

  6.   

    在用Hibernate做修改操作时,最好现在库里面把相应的那条数据库查出来,这样保证实体类与数据库保持同步,然后再进行update操作
      

  7.   

    是item对象没有主键值,我以前也遇到了这样的情况!
      

  8.   

    是你在.hbm配置文件中,设置了级联保存数据造成的吧
      

  9.   

    我的确在配置文件里设置了级联,why?