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

【hibernate问题】session.createQuery(hql)该方法阻塞,求解!
今天遇到的一个新奇问题,研究了一下午还是没有研究出来。。特发给哥们儿帮看看。。
如下:
public <E> E getDataCountwithHQL(final String hql, final Object... params) {
return (E) this.getHibernateTemplate().execute(new HibernateCallback() {
public Object doInHibernate(Session session)
throws HibernateException, SQLException {
System.out.println(hql);//这点可以取到hql语句
System.out.println(session.isOpen());//这点返回true
Query query = session.createQuery(hql); //该方法阻塞,不报异常
System.out.println("@@@@@@@@@@@@@@@@@@@");//后面不再打印
System.out.println(query);//后面不再运行
....
}});}

把session.createQuery(hql)改成session.createSQLQuery(sql)则可以完美运行。。如下:

public <E> E getDataCountwithHQL(final String sql, final Object... params) {
return (E) this.getHibernateTemplate().execute(new HibernateCallback() {
public Object doInHibernate(Session session)
throws HibernateException, SQLException {
System.out.println(sql);//这点可以取到hql语句
System.out.println(session.isOpen());//这点返回true
SQLQuery query = session.createSQLQuery(sql); //运行正常
System.out.println("@@@@@@@@@@@@@@@@@@@");//运行正常
System.out.println(query);//后面运行正常...
....
}});}

代码基本是这样子,考来的时候手动改了一下。。可能有手误,哥儿们帮看看为啥用session.createQuery(hql)的时候会阻塞呢.,最郁闷的是他不报异常,报下异常也好解决吧..!!!!求解啊。。谢谢了


------解决方案--------------------
有些异常是不会主动报的,你要自己去try catch。
先试试一搬的异常exception
Exception并不能捕捉所有的异常,可以使用如下捕捉
不行的话,在试试如下的
try{
...
}catch (Throwable e1) {
}