Spring+hibernate 中如何执行sql语句操作????
我的代码片断:
import net.sf.hibernate.HibernateException;
import net.sf.hibernate.Query;
import net.sf.hibernate.Session;
Session session = null;
try {
session = getHibernateTemplate().getSessionFactory().openSession();
} catch (HibernateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
String sql = "insert into {Org} (id,name) values(-1,+"+rootName+")";
String[] tableName = {"Org"};
Class[] className = {Org.class};
Query query = session.createSQLQuery(sql ,tableName, className);
以上经过测试没有语法错误,但是这里的query 是net.sf.hibernate.Query ,查过它的所有方法,没有execute 类似的方法。
不知道如何执行,试过list , uniqueResult 方法,结果报错。 本人另一个hibernate 环境中的代码可以正常运行。
import org.hibernate.Query;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.hibernate.classic.Session;
import entity1.Duck;
public class TestHiber {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Session ses = null;
SessionFactory sf=new Configuration().configure().buildSessionFactory();
ses=sf.openSession();
// SQLQuery sq = ses.createSQLQuery("insert into Duck values(-1,\"gg\")");
// sq.executeUpdate();
String sql = "insert into {Duck} (id,head) values(-2,\"gaga\")";
String[] tableName = {"Duck"};
Class[] className = {Duck.class};
Query query = ses.createSQLQuery(sql,tableName,className);
query.executeUpdate();
}
}
呵呵,表达能力不强,最后在总结一下问题:
纯hibernate环境下,session.createSQLQuery 返回的是org.hibernate.Query对象,而该对象有executeUpdate()方法。 在spring 中,返回的是net.sf.hibernate.Query 对象,居然不能execute,郁闷中~~~
不知道如何解决以上问题。。。。。难道使用spring hibernateTemplate 下的createSQLQuery 只能做查询工作吗??希望高手指点。。。