SSh中关于Hibernate的问题

getHibernhttp://ask.csdn.net/#ateTemplate().update这个方法具体要怎么写,如果我要根据我一个User表的id来更新这个用户的其他信息的话,要怎么写

 //假设User有 name、address、age三个字段
    public void updateUser(int userid){
        User s=(User)getSession().load(Student.class, 2);//根据id查询出你要修改的那条信息,例如修改第2条
        u.setName("小明");//要修改姓名(name)
        u.setAddress("xx省xx市");//要修改地址(address)
        this.getHibernateTemplate().update(u);
    }
    //注意:如果没有先查出数据就直接修改那条数据的某个字段,你的数据更新后,没有修改的字段会变成null的
    //例如:假如我上面没查询,直接修改name和address,那数据库被修改后age的值就会变成null

getHibernateTemplate().update(user),这个方法里面的参数必须是对象,如果输入只有id,可以根据id查询出对象出来,然后将对象传进去。
如:
String queryString = "from User where cid = ?";
User user = ((List) this.getHibernateTemplate().find(queryString, id)).get(0);
this.getHibernateTemplate().update(user);

你是要SQL语句吗???

对啊,我用SQL语句写啊。。。。。

public void update(User user){
User user2=(User)getHibernateTemplate().get(User.class, user.getUid());
user2.setUsername(user.getUsername());
user2.setPassword(user.getPassword());
this.getHibernateTemplate().update(user2);

    这样写有错吗

你那个update()是不是自己写的啊,还是生成的。

自己写的啊,当然自己写的

这样可以提交到数据库吗

如果你写的SQL语句对的话,应该是可以的。

String queryString = "from User where cid = ?";
User user = ((List) this.getHibernateTemplate().find(queryString, id)).get(0);
this.getHibernateTemplate().update(user);

我记得hibernate有个机制,session用get或者find等方法的时候是持久态,这个时候只需要直接对象点set重新赋值,就可以更新,不用再去执行update方法