日期:2014-05-20  浏览次数:20651 次

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 语句的,只不过需要在配置文件中进行相关的配置,直接执行会引发异常,具体什么异常记不太清了。
------解决方案--------------------