Как правильно настроить сохраняемость между хранилищами с помощью Spring Data JPA + Neo4j?

Я пытаюсь запустить очень минимальный проект кросс-хранилища 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, он равен нулю
  • В результате вышеизложенного ^ моей сущности не присваивается идентификатор.
  • Я вообще не вижу в логах активности SDN
  • Я что-то делаю явно не так?

В целом, я надеялся подтвердить некоторые предположения и лучше понять поддержку сохраняемости между хранилищами в целом:

  • Чтобы включить его, мне нужно включить расширенное сопоставление?
  • В рамках включения расширенного сопоставления мне нужно настроить AspectJ; включает ли это включение ткачества времени загрузки? Если да, то достигается ли это с помощью конфигурации @EnableLoadTimeWeaving?
  • Предполагая, что вся моя конфигурация в конечном итоге исправлена, следует ли ожидать, что частичные узлы сохранятся в Neo4j, когда я сохраню их с помощью репозитория JPA? Это должно выполняться кросс-магазинной поддержкой, которая руководствуется аспектами, верно?

Спасибо за любую помощь, которую можно предложить!


person simonl    schedule 18.06.2015    source источник


Ответы (1)


Я отправил сообщение в группу Google Neo4j и получил несколько отзывов от Майкла Хунгера, поэтому я собираюсь поделиться здесь:

  • Оказывается, библиотека кросс-магазина какое-то время бездействовала
  • Репозитории JPA не поддерживаются, поддерживаются только операции EntityManager.
  • Настройка кросс-хранилища не предназначалась для удаленного сервера и не тестировалась.

Итак, в итоге мое основное понимание / предположения были неверными!

Источник: https://groups.google.com/forum/#!topic/neo4j/FGI8692AVJQ

person simonl    schedule 19.06.2015
comment
Привет, Саймон, так как же вы в итоге связали свое приложение с этими двумя типами ресурсов? У вас получилось с двумя разными менеджерами транзакций? Для меня этого было бы достаточно, я все еще пытаюсь запустить свое первое приложение JPA / Neo4J stackoverflow.com/questions/32296676/ - person Stephane; 09.09.2015
comment
Привет, @StephaneEybert, я закончил тем, что использовал два, объединив два разных менеджера транзакций вместе, и принял стратегию управления транзакциями с максимальными усилиями. В нашем случае шаблон наилучшего усилия был достаточно хорош. Проверьте - stackoverflow.com/questions/15817909/ Я также рад помочь / поболтать с SO. Мое имя пользователя simonl в группе Slack Neo4j. - person simonl; 09.09.2015
comment
Сейчас я в группе Slack Neo4j. Я не знал об этом. Спасибо за совет. Я также выбрал связанный менеджер транзакций, как описано в stackoverflow.com/questions/12749747/ и решил мою проблему. Вы только что подарили мне хороший день! - person Stephane; 10.09.2015