1.在hibernate3.5之前,我们运用hibernate开发J2EE项目通常会引以下几个jar包:
hibernate核心包:hibernate3.jar
持久化:ejb3-persistence.jar
则javax.persistence.OneToMany.class就在ejb3-persistence.jar中。
2.在hibernate3.5及其以后,运用hibernate开发J2EE项目通常会引以下几个jar包:
hibernate核心包:hibernate3.jar
持久化:hibernate-jpa-2.0-XXX.jar
hibernate-jpa-2.0-XXX.jar中已将包含了ejb3-persistence.jar所有类库和其他一些扩展,固然javax.persistence.OneToMany.class也就在hibernate-jpa-2.0-XXX.jar中了。所以当我们从3.5以下版本上级到3.5以上版本时,很容易出现不知道哪些jar包该保留哪些该删掉,因而两个jar包同时存在,出现了这个冲突异常。
3.其实持久化并不是只有ejb3-persistence.jar和hibernate-jpa-2.0-XXX.jar提供,Java EE(注意:是Java EE,并不是J2ee,J2ee在1.4以后就命名为Java EE,而且新增了很多类库)核心类库同样也提供了javax.persistence类库,当你的项目hibernate导入的jar都正常后仍旧出现冲突异常,那么你就要考虑是不是你引入的其他类库导致了这个异常。比如Java EE5及其以后的核心类库。
我不小心依赖了hibernate-jpa-2.0-api-1.0.1.Final.jar和ejb3-persistence包,导致了这个问题,删除掉去ejb3-persistence依赖即可。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于