hibernate 更改数据时如何只改一列(就是一条数据的一个字段)?
展开全部
方法多多,
用hql语句,或直接update实体对象,Hibernate只更新实体对象中更新了的属性。
用hql语句,或直接update实体对象,Hibernate只更新实体对象中更新了的属性。
更多追问追答
追问
我用的是ssh 框架, 一般都是更改对象and 保存对象,而且 我不知道 hibernate 有update这种hql语句, 如果有的话 帮帮忙给我写出来好吗?
追答
String hql = "update com.test.User u set u.name='张三' where u.id = '100' ";//定义hql
Session session = sessionFactory.openSession();//获得session
Transaction tx = session.beginTransaction();//打开事务
Statement st = session.connection().createStatement();//获得statement
st.execute(fromClause);//执行hql
tx.commit();//提交事务
session.close();//关闭session
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
先使用load方法通过id取到要修改的列到对象里,使对象成为持久态,然后再set你要修改的列属性
追问
我用的是ssh 框架,session的开关都是 sqring 控制的,你这个方法就是要我 做两次数据交互吗? 有没有hql 语句一次行的 ,声明 是hql 语句 有的话帮帮忙写一下
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
set好用update也可以,saveorupdate也可以,merge也可以~~~至于你说其他的列都成了null,我只能怀疑你cascade配置错误
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
先给你的那个bean对象中的id字段赋上值,在调用saveorupdate方法时将这个bean作为参数传进去,hibernate自己知道改id的那一列 如果你用其他主键的同理
更多追问追答
追问
我知道这个 , 我就用的这个方法 ,但是通常情况下 :除了我改动的那个字段和iD值,其他的列都成了null ,就连数据库的约束都给无视掉了(就是约束没有起作用);求解
追答
..你的主键是用来找到你要修改的那个列的,但是我没说这个bean只set这个主键值 修改信息呢也是要set到这个bean中的,要不都是默认肯定是null啊
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询