Vaadin 和 Spring Data Neo4j 4.0.0 持久性问题
Vaadin and Spring Data Neo4j 4.0.0 Persistence Issue
我有一个 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 Info]: connection: 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.DefaultErrorHandlerdoDefault
严重:
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 依赖项时,一切正常。关于我的理论是否正确或如何克服这个问题的任何想法?谢谢!
你说得对,javax.persistence
依赖项不应包含在 SDN 4 中。
如果您正在使用快照 (4.0.0.BUILD-SNAPSHOT),它已被删除 - 请试一试。否则,下一个版本将没有这个依赖。
我有一个 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 Info]: connection: 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.DefaultErrorHandlerdoDefault
严重: 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 依赖项时,一切正常。关于我的理论是否正确或如何克服这个问题的任何想法?谢谢!
你说得对,javax.persistence
依赖项不应包含在 SDN 4 中。
如果您正在使用快照 (4.0.0.BUILD-SNAPSHOT),它已被删除 - 请试一试。否则,下一个版本将没有这个依赖。