【问题标题】:How do I properly set up cross-store persistence using Spring Data JPA + Neo4j?如何使用 Spring Data JPA + Neo4j 正确设置跨存储持久性?
【发布时间】:2015-09-04 09:29:33
【问题描述】:

我正在尝试运行一个非常小的 JPA + SDN (Spring Data Neo4j) 跨商店项目,并试图证明使用 JPA 存储库调用保存部分实体将在 Neo4j 中创建相应的节点。

我已按照在 SO、Google 和 Spring 网站上找到的说明/建议进行操作,但目前仍无法正常运行。我目前在以下位置创建了一个最小的测试项目:

https://github.com/simon-lam/sdn-cross-store-poc

该项目使用 Spring Boot,并有一个简单的域,其中包含一个图形实体 GraphNodeEntity.java 和一个部分实体 PartialEntity.java。我编写了一个非常基本的测试PartialEntityRepositoryTest.java,来保存部分实体并看到:

  • 似乎使用了错误的事务管理器,因为CrossStoreNeo4jConfiguration 类没有正确自动装配entityManagerFactory,它为空
  • 由于上述 ^,没有为我的实体分配 ID
  • 我在日志中根本看不到任何 SDN 活动
  • 我做错了什么?

更一般地说,我希望确认一些假设并更好地理解跨商店持久性支持:

  • 要启用它,我需要启用高级映射吗?
  • 作为启用高级映射的一部分,我需要设置 AspectJ;这是否包括启用加载时间编织?如果是这样,这是通过使用@EnableLoadTimeWeaving 配置完成的吗?
  • 假设我的所有配置最终都已修复,当我使用 JPA 存储库保存部分节点时,我是否应该期望看到部分节点保存在 Neo4j 中?这应该由方面驱动的跨商店支持来处理,对吧?

感谢您提供的任何帮助!

【问题讨论】:

    标签: java spring spring-boot spring-data-jpa spring-data-neo4j


    【解决方案1】:

    我向 Neo4j Google Group 发送了一条消息,并从 Michael Hunger 那里得到了一些反馈,所以我将在这里分享:

    • 原来跨存储库已经休眠了一段时间
    • 不支持 JPA 存储库,仅支持 EntityManager 操作
    • 跨存储设置不适用于远程服务器,并且未经测试

    总之,我的核心理解/假设是错误的!

    来源:https://groups.google.com/forum/#!topic/neo4j/FGI8692AVJQ

    【讨论】:

    • 嗨,Simon,那么您是如何最终将您的应用程序连接到这两种类型的资源的呢?您是否成功使用了两个不同的事务管理器?这对我来说已经足够了,我仍在努力让我的第一个 JPA / Neo4J 应用程序起飞stackoverflow.com/questions/32296676/…
    • 嗨@StephaneEybert,我最终使用了两个将两个不同的事务管理器链接在一起并采用了尽力而为的事务管理策略。在我们的用例中,尽力而为模式已经足够好了。退房 - stackoverflow.com/questions/15817909/… 也很乐意帮助/聊聊。我的用户名是 Neo4j 松弛组中的 simonl。
    • 我现在加入了 Slack Neo4j 小组。我不知道。谢谢你的提示。我还使用了stackoverflow.com/questions/12749747/… 中描述的链式事务管理器并解决了我的问题。你刚刚给了我美好的一天!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-04
    • 2021-01-28
    • 1970-01-01
    • 1970-01-01
    • 2017-07-20
    • 2014-01-08
    • 2015-03-03
    相关资源
    最近更新 更多