4
我在我的项目中使用了Spring和hibernate的JPA 2.0。如何在WAS 6.1中使用javax/persistence/spi/PersistenceUnitInfo.getValidationMode()
但是,运行时为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类,我发现它位于下面的罐子:
\IBM\SDP\runtimes\base_v61\lib\j2ee.jar
和
\WEB-INF\lib\hibernate-jpa-2.0-api-1.0.1.Final
我从以上的罐子和DE两者类提取使用JAD编译它们进行比较。
我发现getValidationMode()方法在j2ee.jar中不存在,但存在于hibernate-jpa jar中。
这是我得到的错误的原因? 如何解决?我如何告诉websphere在hibernate jar中寻找类,而不是在服务器运行库lib中?
要明确,您不能在6.1(持久性上下文/ unit-ref和@ PersistenceContext/UnitRef)中使用容器管理的JPA。如果您使用共享库来覆盖JPA支持,那么您仍然可以使用应用程序管理的JPA。当然,你失去了很多好处... –
@bkail但你仍然是指JPA 1.0,对不对?我对WAS的6.1版本并不熟悉,我只是根据我的7.0经验进行外推。所以它更加困难6.1 ... – MaDa
不,如果你重写JPA API(使用父类最后的CL),那么你可以使用任何你想要的(包括JPA 2.0),只要你不需要期望容器与您提供的内容整合。 –