Генерация UUID GraphAware не работает при создании узлов Neo4j с загрузкой Spring

Я перешел по ссылке https://github.com/graphaware/neo4j-uuid, чтобы сгенерировать UUID для каждый узел neo4j, созданный из загрузочного приложения Spring. Вот список шагов, которые я выполнил по ссылке:

  1. Добавлен graphaware-uuid-3.3.3.52.16.jar файл в \plugins папку Neo4jDB.
    В моем случае C:\Users\Naveen\AppData\Roaming\Neo4j Desktop\Application\neo4jDatabases\database-***\installation-3.3.2\plugins

  2. # P3 #
    # P4 #
  3. Создан класс модели в приложении весенней загрузки

    @NodeEntity 
    public class Skill {
        @GraphId
        private Long graphId;
    
        @Property(name = "uuid")
        private Long uuid;
    
        @Property(name = "skillName")
        private String skillName;
    
        //...getters and setters  
    }
    
  4. Создан интерфейс репозитория Spring Neo4j Data

    public interface SkillRepository extends GraphRepository<Skill> {  
    }
    
  5. Запустил базу данных Neo4j, загрузил контекст Spring и протестировал конфигурации:

    public Skill createkill() {
        Skill skill = new Skill();
        skill.setSkillName("Java");
        skill = skillRepository.save(skill);
        return skill;
    }
    

Проблема: в Neo4j DB создается узел со свойством graphId, заполняющимся автоматически, но свойство uuid не заполняется. Возвращенный объект Skill содержит нулевое значение для свойства uuid.

Я проверил, Graphaware Framework и UUID не запускаются на Neo4j GrapheneDB и GraphAware UUID не генерирует ссылки, но не смог найти решение моей проблемы.

Пожалуйста, помогите узнать, что я делаю не так, или если я что-то упускаю. Или предложите любое альтернативное решение поколения uuid.

Сведения о версиях используемых библиотек и инструментов:
Java 1.8.0_131
Neo4J 3.3.2 Enterprise
graphaware-uuid-3.3.3.52.16.jar
Spring boot 1.5.10


person Purushotham    schedule 15.03.2018    source источник


Ответы (2)


Как упомянул @Bruno Peres, все конфигурации и код были правильными, за исключением того, что я пропустил копирование GraphAware Server, Runtime jars и связанных с ним jar-файлов в папку \plugins. Вот список jar-файлов, которые я поместил в папку \plugins, чтобы успешно запустить Neo4j DB с GraphAware и сгенерировать UUID.

алгоритмы-3.0.4.43.5.jar
changefeed-2.3.2.37.7.jar
common-3.3.3.52.jar
graphaware-uuid-3.3.3.52.16.jar
kryo- 2.24.0.jar
minlog-1.2.jar
nlp-3.3.2.52.6.jar
objenesis-2.6.jar
runtime-3.3.3.52.jar
runtime-api- 3.3.3.52.jar
server-3.3.3.52.jar
server-common-2.2.6.35.jar
spring-beans-4.3.14.RELEASE.jar
spring-context-4.3. 14.RELEASE.jar
Spring-context-support-4.3.13.RELEASE.jar
Spring-core-4.3.14.RELEASE.jar
Spring-expression-4.3.14.RELEASE.jar < br> timetree-3.3.3.52.27.jar
tx-api-3.3.3.52.jar
tx-executor-3.3.3.52.jar
uuid-3.2.jar
писателем-3.3. 3.52.jar
писатель-api-3.3.3.52.jar

GraphAware внутренне использует фреймворк Spring. Вот почему я также включил в папку пружинные банки.

person Purushotham    schedule 17.03.2018
comment
Вы можете скопировать только файл с поддержкой графов и neo4j-uuid в каталоги плагинов, и он будет работать. - person Paulin Amougou; 07.06.2018

Свойство UUID не возвращается при создании узла, а только в следующей транзакции.

Вы можете проверить это, создав узел с помощью вашего приложения Java и запросив этот узел в браузере Neo4j (или запустив другую транзакцию и запрос в приложении Java). Свойство UUID должно присутствовать.

person Bruno Peres    schedule 15.03.2018
comment
Я проверил в браузере Neo4j, а также в своем java-приложении с другой транзакцией. Но свойство UUID не было сгенерировано. К счастью, ваш ответ помог мне найти первопричину. В моем случае я пропустил добавление банок GraphAware Server и Runtime в папку \plugins. UUID генерируется для всех узлов один раз после добавления всех зависимых jar-файлов. Еще раз спасибо. - person Purushotham; 16.03.2018