hibernate – 如何在WAS 6.1中使用javax / persistence / spi / PersistenceUnitInfo.getValidationMode()

我在我的项目中使用JPA 2.0和
Spring以及hibernate.

但是,运行时是WAS 6.1.

编译顺利.

但是,在部署应用程序期间,我收到以下错误:

com.ibm.ws.exception.RuntimeError: java.lang.RuntimeException: java.lang.NoSuchMethodError: javax/persistence/spi/PersistenceUnitInfo.getValidationMode()Ljavax/persistence/ValidationMode;

在使用ctrl shift T搜索PersistenceUnitInfo类时,我发现它位于以下jar中:

\IBM\SDP\runtimes\base_v61\lib\j2ee.jar

\WEB-INF\lib\hibernate-jpa-2.0-api-1.0.1.Final

我从JARS中提取了上面的类并使用JAD对它们进行了反编译以进行比较.

我发现方法getValidationMode()在j2ee.jar中不存在,但存在于hibernate-jpa jar中.

这是我得到的错误的原因???
怎么解决?如何告诉websphere在hibernate jar中查找该类而不是在服务器运行时lib中查找?

最佳答案 无论您做什么,都不能将JPA 2.0与Websphere 6.1一起使用.正如您所注意到的那样,它已经非常深入地连接到WAS内部.您有两种选择:

>使用适当的功能包迁移到WAS 7.0(在我的other answer中有更多信息).
>使用JPA 1.0将您的Hibernate降级到3.3.2 GA.

点赞