首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2EE开发 >

hibernate 执行 sql 有关问题

2012-01-23 
hibernate 执行 sql 问题String sqlinsert into result(id,aimTurnover,aimObjectTask,objectTask,aimRe

hibernate 执行 sql 问题
String sql="insert into result(id,aimTurnover,aimObjectTask,objectTask,aimRestTask,aimSort,year,mouth) select '"+random+"',aimTurnover,aimObjectTask,objectTask,aimRestTask,aimSort,'"+year1+"','0"+month1+"' from result where year='"+year+"' and mouth='0"+month+"' and not exists(select * from result a where year='"+year1+"' and mouth='0"+month1+"' and seller=a.seller)";  
getSession().createSQLQuery(sql); 
getSession().clear();



请教hql可以执行sql的插入、修改操作吗?
上面的SQL语句直接执行是没有问题的 但是通过hibernate执行就没反应,也不报错
可以getSession().createSQLQuery(sql);的方法执行SQL语句吗?
有什么好的办法没有?

[解决办法]
SQLQuery query=getSession().createSQLQuery(sql);
query.executeUpdate();

[解决办法]
getSession().createSQLQuery(sql) 可以的
[解决办法]
query.executeUpdate(); 只支持update和delete
如果你集成了spring可以考虑,继承JdbcDaoSupport,利用JdbcTemplate的public void execute(String sql)
方法,应该可以
[解决办法]
hql好像不可以执行sql的插入、修改操作, 楼主试试吧, 你看看是不是把异常信息给catch 住了
[解决办法]
session通过createSQLQuery是可以执行sql语句的!但是在hibernate中最好用hql 没有反映是因为你的事务配置那有点问题!
[解决办法]
getSession().createSQLQuery(sql)
[解决办法]

探讨
SQLQuery query=getSession().createSQLQuery(sql);
query.executeUpdate();

[解决办法]
有点晕了

[解决办法]
为什么不把这些属性封装成一个对象来插入呢?
[解决办法]
hibernate 不能引用这样的变量
[解决办法]
看看是不是事务没有提交,Hibernate是可以这样执行SQL的,建议最好封装成对象来操作~
[解决办法]
你没提交事物哥们
[解决办法]
String hql="这里写sql语句"
QLQuery query=getSession().createSQLQuery(hql); 
query.executeUpdate(); 

下面是按条件删除的一个例子:
public void delete(String id){
String hql="delete From Students as t where t.id=?";
Query query=this.session.createQuery(hql);
query.setString(0, id);
query.executeUpdate();
[解决办法]
Hibernate提供执行SQL语句的方法!!

SQLQuery query=getSession().createSQLQuery(sql);
[解决办法]
可以,使用了hibernate,就可以用它提供的模板.
Stu stu=(Stu)getsession.get(Stu.class,1);//先加载一个对象
getHibernate().delete(对象);//现用它来删除/增/修改
getHibernate().save(对象);//
getHibernate().update(对象);//

同时也可以使用:hql对数据对象来操作。
[解决办法]
Query query=getSession().createSQLQuery(sql); 
Query.executeUpdate();
Query接口即可以数据查询又可以进行增、删、改。

[解决办法]
Hibernate 可以是可以执行 SQL 语句的,只不过需要在配置文件中进行相关的配置,直接执行会引发异常,具体什么异常记不太清了。
------解决方案--------------------


建议用hibernate的时候最好不要用sql语句,由于hibernate自身的一些原因,一些正常的sql也无执行。
而且报告也来的异常也很难正确定位,用hql就不会有那么多的麻烦,二者的区别也不是很大。

[解决办法]

探讨
SQLQuery query=getSession().createSQLQuery(sql);
query.executeUpdate();

[解决办法]
up
[解决办法]
探讨
getSession().createSQLQuery(sql) 可以的

[解决办法]
看看事物提交
[解决办法]
加上这两句试下:
Transaction tx = session.beginTransaction();
tx.commit();
事务提交下!
[解决办法]
可能是这句话的缘故:getSession().clear(); 
同时执行插入、修改操作,还要支持事务
Transaction tx = session.beginTransaction(); 
SQLQuery query=getSession().createSQLQuery(sql); 
query.executeUpdate(); 
tx.commit(); 

[解决办法]
没有事务提交呀!这样是可以执行的了
Transaction ts=session.beginTransaction();
ts.commit();
数据要更新数据,这个就是向数据库说明的“我要加数据了,快更新啦,呵呵!!!”
[解决办法]
this.getSession().createSQLQuery(sql)是可以执行Sql语句的,如果实在没有办法就用JDBC来解决吧,我前几天用要对数据库进行位运算,这个接口也不行,后面直接用this.getSession().xxxx() 连接Jdbc来完成,呵呵~
我可不管别的那么多,任务急 后面终于完成了
[解决办法]
HQL可以对数据库进行操作啊!
[解决办法]
应该是没开事务的问题
[解决办法]
引用楼主 xihui912 的帖子:
getSession().createSQLQuery(sql);
getSession().clear();

[解决办法]
若要用sql语句的话, 可以试试 hibernate的nameQuery

热点排行