怎么在hibernate 中执行一个update的sql语句?

ok60000 2007-07-23 09:28:21
请问 怎么在hibernate 中执行一个update的sql语句?
sql是更新一个字段的update 语句:
SQLQuery sQLQuery=sess.createSQLQuery(sql);
sQLQuery.executeUpdate();
用这个不行.
请问怎么实现??
...全文
12431 27 打赏 收藏 转发到动态 举报
写回复
用AI写文章
27 条回复
切换为时间正序
请发表友善的回复…
发表回复
默默坚持 2012-04-26
  • 打赏
  • 举报
回复
没有提交事务吧。
zengjz88 2012-04-26
  • 打赏
  • 举报
回复
你这样写应该是可以update的,创建的就是SQL不是HQL。 是不是其他什么出了问题
xyghehehehe 2012-04-26
  • 打赏
  • 举报
回复
解决办法很简单,在hibernate映射文件中加入节点<sql-query>,如:
<sql-query name="testQuery">
insert into t_d_test values('1','1')
</sql-query>
在程序中先获取到这个sql,然后执行就行了,如:
String sql = session.getNamedQuery("testQuery").getQueryString();
Query query = session.createSQLQuery(sql);
query.executeUpdate();
xyghehehehe 2012-04-26
  • 打赏
  • 举报
回复
解决办法很简单,在hibernate映射文件中加入节点<sql-query>,如:
<sql-query name="testQuery">
insert into t_d_test values('1','1')
</sql-query>
在程序中先获取到这个sql,然后执行就行了,如:
String sql = session.getNamedQuery("testQuery").getQueryString();
Query query = session.createSQLQuery(sql);
query.executeUpdate();
liuyao911 2010-12-26
  • 打赏
  • 举报
回复
executeUpdate()如果我没记错的话,它好像只能进行查询,对于删除、修改、新增都没用吧!
shulanztf 2010-12-24
  • 打赏
  • 举报
回复
5楼说的对,我也采用了他的方法,可是新问题出现 了,这样做需要对这条记录的所有字段进行update,就是:“
sjbm.setAc002( "管理平台者 ");
sjbm.setAc003( "0003 ");
.
.
.”
程序到了这:“Hibernate: update User1 set address=?, age=?, email=?, gradeId=?, isOnline=?, latestDate=?, nickName=?, passwd=?, passwdAnswer=?, passwdQuestion=?, phone=?, point=?, provinceCity=?, referrer=?, registerDate=?, sex=?, status=? where id=?
”又进行不下去了,这个新问题怎么解决?
darrenluo 2010-08-13
  • 打赏
  • 举报
回复
[Quote=引用 20 楼 niu90 的回复:]

SQLQuery sQLQuery=session.createSQLQuery(sql);
sQLQuery.executeUpdate();
[/Quote]
+1
niu90 2010-08-13
  • 打赏
  • 举报
回复
SQLQuery sQLQuery=session.createSQLQuery(sql);
sQLQuery.executeUpdate();
跑跑鱼 2010-08-12
  • 打赏
  • 举报
回复
hql是面向对象的
EngineZhang 2010-08-12
  • 打赏
  • 举报
回复

trans = session.beginTransaction();
trans.begin();
SQLQuery sQLQuery=session.createSQLQuery(sql);
sQLQuery.executeUpdate();
trans.commit();
sailer2008 2010-08-12
  • 打赏
  • 举报
回复
15楼此话差矣,对于有些复杂的查询是无法用hql的,只能用sql来处理
koj5201314 2007-10-08
  • 打赏
  • 举报
回复
5楼正解 老大 hibernate最好对对象进行操作
hibernate你还玩sql?不是吧 那你用hibernate还有什么含义!!!
guishuanglin 2007-10-08
  • 打赏
  • 举报
回复
hibernate 可以直接用sql,
如果直接用sql需要返回实体,可以直接指定对应的应体,
用sql与用对象操作是hibernate的一个对jdbc系统转移到hibernate时的一个功能.
非常不错
windyt 2007-10-04
  • 打赏
  • 举报
回复
哦,是哦。直接用SqlQuery好像不能直接执行 增 删 改 操作,不过,我找了一下,下面的方法可以的。

trans = session.beginTransaction();
Connection conn = session.connection();
PreparedStatement stmt = conn.prepareStatement(sql);
stmt.executeUpdate();
stmt.execute();
trans.commit();
luoyinghua 2007-10-04
  • 打赏
  • 举报
回复
如果您不愿意用saveOrUpdate()或update()方法,我想只有楼上windyt的方法了。
zqpsswh 2007-10-02
  • 打赏
  • 举报
回复
如果你没有Mapping Object的话 那是没指望了

自己把这个方法改成JDBC方式吧

gosure 2007-09-30
  • 打赏
  • 举报
回复
楼主写那两句看不出来错,请给更多代码和出错信息.
shadao 2007-09-30
  • 打赏
  • 举报
回复
在native SQL里,每个字段的类型(HibernateType)都必须被定义

参考org.hibernate.SQLQuery接口
lizarbhc 2007-09-30
  • 打赏
  • 举报
回复
hibernate都是执行hql语句,再给你找找
dyw31415926 2007-09-28
  • 打赏
  • 举报
回复
@windyt() :
=================
你这里是find的查询语句, 你尝试着写一些delete from *** 这样的update的sql语句看能不能执行?
加载更多回复(7)

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧