异常:
Error creating bean with name 'sessionFactoryWrite' defined in class path resource [applicationContext.xml]: Invocation of init method failed; nested exception is java.lang.NoSuchMethodError: javax.persistence.OneToMany.orphanRemoval()Z at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.postProcessPropertyValues(CommonAnnotationBeanPostProcessor.java:306) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1122) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:522) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:461) at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:295) Truncated. see log file for complete stacktrace 使用spring + hibernate :
本地tomcat下跑没有异常,UAT环境忽然出现如下以上异常,主要问题是: java.lang.NoSuchMethodError: javax.persistence.OneToMany.orphanRemoval()Z 出现这种异常通常是由于Myeclipse的javaee.jar 版本较低,与Hibernate等自带的JPA出现了冲突。
无法初始化hibernate,sessionfactory。
这显然是环境问题。
解决方案:
配置weblogic.xml,添加优先加载jar包:
<?xml version="1.0" encoding="UTF-8"?> <weblogic-web-app> <container-descriptor> <!--<prefer-web-inf-classes>true</prefer-web-inf-classes> --> <prefer-application-packages> <package-name>org.apache.commons.lang.*</package-name> <package-name>antlr.*</package-name> <package-name>org.hibernate.*</package-name> <package-name>javax.persistence.*</package-name> <package-name>org.apache.cxf.*</package-name> </prefer-application-packages> </container-descriptor> <context-root>/</context-root> <session-descriptor> <persistent-store-type>replicated_if_clustered</persistent-store-type> <cookie-name>JSESSIONID-vehicle</cookie-name> </session-descriptor> </weblogic-web-app>