Использование Cypher для автоматического создания идентификаторов для SDN4

Я создал модель neo4j с текстовым файлом из cypher утверждений. Теперь я хотел бы создать приложение, использующее эту базу данных, и я буду использовать SDN4. В моем классе @NodeEntity мне нужно будет иметь GraphID типа Longdeclared. Но этот идентификатор генерируется SDN4, а в моей базе данных нет таких идентификаторов. Есть ли способ создать их с помощью Cypher, чтобы я мог просто правильно сопоставить свои объекты Java с уже существующими узлами и отношениями в базе данных?


person aaaaarrrgghhh    schedule 14.06.2016    source источник


Ответы (1)


Поле @GraphId всегда является внутренним идентификатором узла или отношения, назначенным Neo4j, и для него нельзя установить пользовательские значения. Вероятно, вы хотите назначить собственное значение идентификатора как свойство узла. Это можно сделать, добавив собственное поле id:

@GraphId Long graphId; //required, this is the internal node/rel ID that must never be assigned by your code
Long id; //your own primary key

Теперь, когда ваша база данных содержит узлы со свойством id, назначенным оператором в вашем скрипте Cypher, загрузка объектов через SDN заполнит эти поля id в вашем объекте домена.

Если у вас нет собственных первичных ключей, но вам все равно нужен идентификатор, вы можете использовать плагин UUID. который будет автоматически назначать UUID узлам при их создании любым способом (браузер SDN/Neo4j/API и т. д.).

person Luanne    schedule 14.06.2016
comment
просто чтобы уточнить, graphID, упомянутый выше, заполняется SDN или neo4j? Когда я создаю узел из Cypher, он получает идентификатор. Будет ли этот идентификатор автоматически сопоставлен с graphID? В этом случае мне не нужно дополнительное поле UUID — я просто хочу, чтобы мои объекты были правильно сопоставлены с уже существующими узлами! У меня сложилось впечатление, что GraphID должен генерироваться SDN... - person aaaaarrrgghhh; 15.06.2016
comment
ГрафИд генерируется Neo4j. Когда вы создаете узел через Cypher, Neo4j присваивает этот идентификатор. Когда вы загружаете узел через SDN, этот идентификатор сопоставляется с графическим идентификатором для вас. - person Luanne; 15.06.2016