struts和Hibernate整合,报错:java.lang.NoSuchMethodError: javax.persistence.OneToMany.orphanRemoval()Z

1.使用struts + hibernate annotations的@OneToMany 一对多双向关联后出现异常: 

java.lang.NoSuchMethodError: javax.persistence.OneToMany.orphanRemoval()Z 

原因主要是因为:javaee.jar中的部分类与hibernate-jpa-2.0-api-1.0.0.Final.jar(这个包是用来hibernate注解)存在版本冲突

有时候在项目中有hibernate-jpa-2.0-api-1.0.0.Final.jar又有ejb3-persistence.jar,hibernate-annotations.jar,hibernate-commons-annotations.jar(这个三个包也是用于注解的)也会出现冲突,需要删除冲突的包;

2.如果出现异常:

Caused by: java.lang.ClassNotFoundException: javax.persistence.Cacheable

错误原因: javax.persistence.Cacheable 是 JPA 2.0 规范中的东西!

需要加入hibernate-distribution-3.5.0-Final\lib\jpa目录下的hibernate-jpa-2.0-api-1.0.0.Final.jar



对与1有一下三种解决方法:

(1)

如果是使用MyEclipse创建JavaEE5.0的Web项目,解决办法:删除对Java EE 5 Libraries的使用。

问题原因:javaee.jar中的部分类与hibernate-jpa-2.0-api-1.0.0.Final.jar存在版本冲突。

参考文章:http://hi.baidu.com/siasmen/blog/item/7253e954e3abdb55d0090607.html

(2)

如果使用了ejb的jar包,删除引用,

问题原因:与hibernate-jpa-2.0-api-1.0.0.Final.jar冲突

(3)

如果是用junit测试,junit4自带的jpa包与hibernate的jpa包冲突

 

一般情况下建议使用第一种:

通常是由于Myeclipse的javaee.jar 版本较低,与Hibernate等自带的JPA出现了冲突。 
网上一些处理方法是删除项目里的 删除 建立web项目时自带的Javaee.jar,可是这样带来的后果是 httpServletRequest 等组件无法使用。 
对于tomcat我目前的解决方法是: 
1. 在 C:\Program Files\Genuitec\Common\plugins下搜索 EE_5 找到EE_5 文件夹; 
2. 进去EE_5文件夹 右键 javaee.jar 打开方式 WINRAR压缩文件管理器,进去里面删除persistence文件夹 这个子文件夹。 

对于weblogic我的解决方法是: 
把hibernate-jpa-2.0-api-1.0.0.Final.jar放到D:\Program Files\weblogic\jdk160_05\jre\lib\ext 就没问题了。 
(如果不行,可以考虑先尝试tomcat的解决方案,再接着试weblogic的。tomcat是修改java的jdk文件,而weblogic是修改本服务器里面的文件)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值