有人回答是jar包冲突的问题,如果是真的那么更高级的版本应该会解决这个问题。
我用MyEclipse10和官网下的hibernate4.2final版本,默认使用javaEE5包,用注解的方式写的实体类做了个oneToOne测试,发现会出现这个异常。意思说one2one.class下没有orphanRemoval()这个方法
hibernate4.2包里persistence包下也有OneToOne这个类,里面是有orphanRemoval()这个方法的,javaee却没有。异常的原因初步分析是注解导入的是javax包,程序应该优先使用javaee的类,为了让它使用hibernate的类,可以给javaee的OneToOne.class取个别名。找到MyEclipse自带的javaee包(我的是在C:\Program Files\MyEclipse\Common\plugins\com.genuitec.eclipse.j2eedt.core_10.0.0.me201110301321\data\libraryset\EE_5这个路径的,你可以在工程下右击jar包--属性里查看jar的路径)找到OneToOne.class 给它取个别名,然后回到MyEclipse刷新工程,运行后就不报错了。还有人提出的解决方法是要删除相应jar包,但是我不支持这种乱删乱改的做法。以上只改了one2one,换成many2many又得改太麻烦了。以下是我认为最好的解决方法。
javaEE5有冲突,换成javaEE6就不报这个问题了。解决方法:方案1、新建个工程 MyEclipse10建web project默认是使用javaEE5的包,新建的时候选择javaEE6。
方案2、更换javeEE包
右击工程名字——build
path——configure
build path——add library 选择MyEclipse libraries 点击next 选择java EE 6 libraries,finish。在java build path别忘了把java EE 5 remove了。刷新工程就OK了。
希望对你有帮助。