你一定没有系统的学过hibernate
下列语句可以直接更新对象。
session.beginTransaction();
User user = session.xxxx//从数据库获取对象。
user.setPassword("xxxx");
session.getTransaction().commit();
原因,事务内“持久态”对象的变化会被更新到数据库。
自己百度 持久态、瞬态、托管态
我觉得你的方法就是应该用的方法,除非主键由程序员自己来维护,但这样容易出错。当主键自动生成时,就得像你说的那样先根据条件查询出来,再更改!另外,我并不觉得这样写代码很麻烦,因为sql语句在代码中只需要写一次,又不是多次都要这样!还有,由于sql优化的需要,要提高sql语句的执行效率,更是要求代码的中的sql语句要写全,即要将你要插入的列名全部写上,而不是由于你要全部插入可以省略列名不写。
你的数据是从数据库里面查询到的,既然你数据已经存入到数据库中,那自动生成的ID也存入到数据库中,那么你修改的时候就需要先查询到数据,再去修改。如果你查询的时候获得不到ID,那就是你数据有问题,你这个地方需要处理的就不是修改的问题,而是数据查询的问题了!
直接用update方法来更新数据啊,只要把你修改之后的对象作为参数传进去就好了,hibernate会根据你传给他的参数的主键值去更新表中的数据的
如果id为空你也要查询,那么试试用左连接。
select 要查询的列
from 表名
join left 表名1 on 表名.列名 = 表名1.列名
hibernate里有现成的update方法啊
用户登录
还没有账号?立即注册
用户注册
投稿取消
文章分类: |
|
还能输入300字
上传中....