我有一个 Vaadin 应用程序,我正在尝试将 Spring Data Neo4j 4 合并到其中。在我的 Vaadin 应用程序中,我使用 JPAContainer 来访问一些 MySQL 数据库,而 JPAContainer 依赖于 javax.persistence jar 来访问它。当我合并 SDN 4 时,我已经能够成功地将节点和关系实体持久保存到我的远程 Neo4j 服务器中,但是我的 JPAContainer 失败了。这是我收到的错误:
[EL 信息]:2015-08-12 08:57:44.44--ServerSession(1000914620)--EclipseLink,版本:Eclipse Persistence Services - 2.5.2.v20140319-9ad6abd
[EL信息]:连接:2015-08-12 08:57:46.984--ServerSession(1000914620)--file:/Users/jlam/Downloads/johnson-master/Sprint02d/target/Sprint02d-1.0-SNAPSHOT/WEB- INF/classes/_Basil_v1_PersistenceUnit 登录成功
2015 年 8 月 12 日上午 8:58:01 com.vaadin.server.DefaultErrorHandler doDefault
严重:java.lang.NoSuchMethodError:javax.persistence.EntityManager.getCriteriaBuilder()Ljavax/persistence/criteria/CriteriaBuilder;在 com.vaadin.addon.jpacontainer.provider.LocalEntityProvider.createFilteredQuery(LocalEntityProvider.java:379) 在 com.vaadin.addon.jpacontainer.provider.CachingSupport.getIds(CachingSupport.java:477) 在 com.vaadin.addon.jpacontainer .provider.CachingSupport$FilterCacheEntry.getAllIds(CachingSupport.java:408) 在 com.vaadin.addon.jpacontainer.provider.CachingSupport.getAllEntityIdentifiers(CachingSupport.java:750) 在 com.vaadin.addon.jpacontainer.provider.CachingMutableLocalEntityProvider.getAllEntityIdentifiers (CachingMutableLocalEntityProvider.java:106)
它说我成功连接到 MySQL 数据库。我通过获取我的 JPAContainers 的大小进行了检查,它与我的数据库的大小相匹配。我认为问题在于 SDN 4 还附带了一些其他版本的 javax.persistence 依赖项,在这个版本中,CriteriaBuilder 方法不存在。JPAContainer 变得困惑,使用的是 SDN 4 javax.persistence 依赖项,而不是我的依赖项文件夹中列出的 javax.persistence-2.1.0.jar 依赖项。
当我删除我的 SDN 4 依赖项时,一切正常。关于我的理论是否正确或如何克服这个问题的任何想法?谢谢!