WebLogic使用SSH架构部署遇到org.hibernate.hql.internal.ast.HqlTok

其实这个问题在之前就遇到过,当时解决了,但今天在部署一个测试轻应用的时候一直没有想起来,特此记录一下。web

 

这个问题出如今使用WebLogic(我使用的是10.3.5版本)发布SSH架构的应用。在操做数据库的时候使用Hibernate配合JPA实现。发布以后没法从数据库获取数据,从日志看到故障提示org.hibernate.QueryException: ClassNotFoundException: org.hibernate.hql.internal.ast.HqlTokspring

这个错误的根本缘由是weblogic要查找本身的antlr,和lib下面的antlr包冲突。最简单的办法是修改Hibernate的配置文件数据库

添加<property name="hibernate.query.factory_class">org.hibernate.hql.classic.ClassicQueryTranslatorFactory</property>架构

若是项目是用spring来管理Hibernate,则须要使用另一种方法测试

修改weblogic.xml
<container-descriptor>
<prefer-web-inf-classes>true</prefer-web-inf-classes>
</container-descriptor>
说明:prefer-web-inf-classes=true是WebLogic's classloader在有重名类时,优先加载Web应用中WEB-INF内的类hibernate

相关文章
相关标签/搜索