求助各位高手,Hibernate3.3作为JPA provider,部署在Websphere6.1上始终报错EntityManagerFactory无法创建,将JPA Provider换成OpenJPA就没有问题,现在产品非要使用Hibernate,这个问题在IBM官方论坛上也有很多人问,但是到目前为止没有解决方法,请求各位有谁做过支持一下,非常感谢!
注:Websphere的classload已经修改成Parent_Last。所有的依赖包也已经添加好。报错信息如下:
0000005a JPAPUnitInfo E CWWJP0009E: The server cannot create an EntityManangerFactory factory for the AoMPU persistent unit from the org.hibernate.ejb.HibernatePersistence provider in jar:file:/opt/WebSphere/AppServer/profiles/default/installedApps/rourkela/AOM-EAR.ear/aom-war.war/WEB-INF/lib/aom-server-DYNAMIC-SNAPSHOT.jar!/ module.
------解决方案--------------------------------------------------------
6.1上要打最新补丁才行,好像是
------解决方案--------------------------------------------------------
有可能,但是不光是6.1有问题,IBM的论坛上,从Websphere5.x到最新的7.0都有这个问题,好像是IBM故意弄出来的问题,深入查看后台日志,好像是在获得EntityManageFactory这个对象时发生类转换异常,所以我猜测这个问题的根本原因是:IBM自己的JDK中的EntityManageFactory所实现的接口和Sun规定的JPA规范中的接口不是同一个,导致类型转换异常,因为这个问题不光是Hibernate有,EclipseLink也有这个问题,但是用JBoss就没有问题。
另外,如果不使用Websphere自己的JPA provider配置,而是直接使用Spring框架提供的JPA provider就没有问题。IBM为了支持自己的OpenJPA实现,而不支持其他的JPA实现,很无语啊。