hibernate - 如何将 javax/persistence/spi/PersistenceUnitInfo.getValidationMode() 与 WAS 6.1 一起使用

标签 hibernate jpa websphere jpa-2.0 websphere-6.1

我在我的项目中使用 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 内部。您有两个选择:

  1. 迁移到带有适当功能包的 WAS 7.0(更多信息请参阅我的 other answer )。
  2. 使用 JPA 1.0 将 Hibernate 降级至 3.3.2 GA。

关于hibernate - 如何将 javax/persistence/spi/PersistenceUnitInfo.getValidationMode() 与 WAS 6.1 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7792963/

相关文章:

java - 如何使用 hibernate 过滤器过滤 hibernate 中的实体

intellij-idea - Intellij/Websphere 运行配置显示 "address localhost:8880 is already in use"

c# - 如何获取 Websphere MQ 连接状态以及如何重置连接 :

java - 用于动态表创建的 hibernate

java - 当我尝试映射(保留)我的数据库时出错

java - hibernate 所需的 C3P0 设置是什么?

java - 为什么我的 hashmap 只取最后一个条目?

session - session 失效后创建新 session

java - 如何在 JPQL 或 HQL 查询中使用 MySQL CONVERT_TZ 函数

mysql - 如何在jpql查询中动态连接表