知识大全 Hibernate3的DetachedCriteria支持[2]

Posted

篇首语:积极思考造成积极人生,消极思考造成消极人生。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Hibernate3的DetachedCriteria支持[2]相关的知识,希望对你有一定的参考价值。

Hibernate3的DetachedCriteria支持[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  回调方法提供了session作为参数 有了session 就可以自由的使用Hibernate API编程了 使用了spring的之后 代码修改如下

  web层代码

  java代码

DetachedCriteria detachedCriteria = DetachedCriteria forClass(Department class); detachedCriteria createAlias( employees e ) add(Restrictions eq( name department )) add(Restrictions gt(( e age ) new Integer( ))); departmentManager findByCriteria(detachedCriteria);

  构造detachedCriteria 作为参数传递给departmentManager

  业务层代码使用spring DepartmentManager的findByCriteria如下

  java代码

public List findByCriteria(final DetachedCriteria detachedCriteria)  return (List) getHibernateTemplate() execute(new HibernateCallback()   public Object doInHibernate(Session session) throws HibernateException    Criteria criteria = detachedCriteria getExecutableCriteria(session);    return criteria list();     );

  实际上也就是

  java代码

Criteria criteria = detachedCriteria getExecutableCriteria(session); return criteria list();

  而已

  但是该程序代码执行 会抛出强制类型转换异常!

  我跟踪了一下spring和Hibernate源代码 原因如下

  spring的HibernateTemplate的execute方法提供的回调接口具有Session作为参数 但是实际上 默认情况下 HibernateTemplate传递给回调接口的session并不是 hibernate impl SessionImpl类 而是SessionImpl类的一个Proxy类 之所以替换成为一个Proxy类 HibernateTemplate的注释说明 Proxy提供了一些额外的功能 包括自动设置Cachable Transaction的超时时间 Session资源的更积极的关闭等等

  java代码

private boolean exposeNativeSession = false;

  execute方法内部

Session sessionToExpose = (exposeNativeSession ? session : createSessionProxy(session));

  但是遗憾的是 Hibernate的DetachedCriteria的setExecutableCriteria方法却要求将session参数强制转为SessionImpl 但是spring传过来的却是一个Proxy类 因此就报错了

  java代码

public Criteria getExecutableCriteria(Session session)  impl setSession( (SessionImpl) session ); // 要求SessionImpl Spring传递的是Proxy  return impl; cha138/Article/program/Java/ky/201311/29141

相关参考

知识大全 Hibernate3.X 实践总结

Hibernate3.X实践总结  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Hibernat

知识大全 Hibernate3的DetachedCriteria支持[1]

Hibernate3的DetachedCriteria支持[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起

知识大全 Hibernate3的DetachedCriteria支持[3]

Hibernate3的DetachedCriteria支持[3]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起

知识大全 Hibernate3新特性及发展趋

Hibernate3新特性及发展趋  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Hiberna

知识大全 hibernate3.0 DTD 定义路径问题

hibernate3.0DTD定义路径问题  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  大家在

知识大全 开源框架Hibernate3的新特性以及发展趋势

开源框架Hibernate3的新特性以及发展趋势  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  

知识大全 整合Hibernate3与JBOSS 3.2.X

整合Hibernate3与JBOSS3.2.X  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  前

知识大全 hibernate3二级缓存的配置及测试

配置ehcachexml文件放到classpath下 <?xmlversion=encoding=GBK?>     <e

知识大全 用Hibernate3.1实现XML和数据库的同步

用Hibernate3.1实现XML和数据库的同步  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!