我想用s2sh实现更新记录的功能,但是我更新后却在数据库里新添了一条记录,请问我改怎么做?谢谢。我的主键是id,自增长类型的,我想根据id来更新记录。

解决方案 »

  1.   

      不知道LZ在更新的时候有没有给Id设值~~~!如果没有的话就是插入一条新数据了!
       更新跟添加的区别在与Id属性有没有值~~!
      

  2.   

    saveOrUpdate() 方法不就可以实现吗
      

  3.   

    你一定要给ID的值。
    还有你要用update的方法。
      

  4.   

    你一定要给对象设置一个ID的值。
    同时调用Hibernate session中的update(obj) 或者 saveOrUpdate(obj) 的方法。
    再提交事物就好了。如果ID没设置,Hibernate就会对数据库里插入一条记录。希望对你有帮助
      

  5.   


    调用对象id的set方法啊!
      

  6.   


    首先呢~~~你的更新、是不是先从后台把数据查询出来、然后才显示到页面上的!!! 那么在select数据的时候把Id也查询出来!
    你的前台显示的时候、不想显示Id的话可以用一个隐藏文本来放置Id的值:
    <input type="hidden" name="id" value="Id的值" />在用户点击更新的时候、不是可以像取其他属性值一样获取了吗?
    如果用Struts2 、那么在Action里面添加一个Id属性并生成get/set方法!
     或者直接把你的类对象生成get/set方法
    如类名:Users        private Integer id;
    private String name;
            ......省略get/set 方法
    Action 名称:        private Users user;
            ......省略get/set 方法 
            //调用你的Update方法
             update(user);页面上的Id跟其他属性空间名称改为:
    <input type="hidden" name="user.id" value="Id的值" />
      

  7.   

    引用 1 楼 hzw2312 的回复:不知道LZ在更新的时候有没有给Id设值~~~!如果没有的话就是插入一条新数据了!
    更新跟添加的区别在与Id属性有没有值~~!更新时没有设,id是自增长的,而且是更新已有的记录,怎么给他设值?
      

  8.   

    问题已解决。更新前先查找数据库中是否有该记录,有的话则更新,没有的话就需要新建记录。在hibernate配置文件中把id属性改成assigned,而不是increment。