hibernate 更改数据时如何只改一列(就是一条数据的一个字段)?

 我来答
hxy850809
2011-08-06 · TA获得超过160个赞
知道小有建树答主
回答量:569
采纳率:0%
帮助的人:321万
展开全部
方法多多,
用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
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ahyyxx222
2011-08-06 · TA获得超过2532个赞
知道小有建树答主
回答量:1405
采纳率:33%
帮助的人:1201万
展开全部
先使用load方法通过id取到要修改的列到对象里,使对象成为持久态,然后再set你要修改的列属性
追问
我用的是ssh 框架,session的开关都是 sqring 控制的,你这个方法就是要我 做两次数据交互吗? 有没有hql 语句一次行的 ,声明 是hql 语句 有的话帮帮忙写一下
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
帐号已注销
2011-08-06 · TA获得超过1243个赞
知道小有建树答主
回答量:2126
采纳率:55%
帮助的人:669万
展开全部
set好用update也可以,saveorupdate也可以,merge也可以~~~至于你说其他的列都成了null,我只能怀疑你cascade配置错误
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wsw_15
2011-08-06 · TA获得超过918个赞
知道小有建树答主
回答量:747
采纳率:62%
帮助的人:363万
展开全部
先给你的那个bean对象中的id字段赋上值,在调用saveorupdate方法时将这个bean作为参数传进去,hibernate自己知道改id的那一列 如果你用其他主键的同理
更多追问追答
追问
我知道这个 , 我就用的这个方法 ,但是通常情况下 :除了我改动的那个字段和iD值,其他的列都成了null ,就连数据库的约束都给无视掉了(就是约束没有起作用);求解
追答
..你的主键是用来找到你要修改的那个列的,但是我没说这个bean只set这个主键值   修改信息呢也是要set到这个bean中的,要不都是默认肯定是null啊
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 3条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式