Я могу вручную установить nodeId в графе neo4j при создании узла?

Я занимаюсь разработкой приложения для Facebook, в котором я вхожу в систему с помощью своей учетной записи Facebook, и Facebook возвращает мне JSON с моими данными Facebook в виде JSON, который я проектирую в класс User.class (меня) следующим образом:

@NodeEntity public class User{ @GraphId Long NodeId; String facebook_id; String facebook_name; }

а потом я делаю template.save(me);это создает узел в графе с 2 свойствами: Пример: facebook_id="1000023453464" а также name="John Smith" и nodeId устанавливается автоматически neo4j: Пример nodeId:1, Проблема заключается в том, что при повторном входе в систему создается еще один узел с такими же свойствами и идентификатором узла:2.

Я избежал этого, проверив, существует ли уже пользователь в графе, прежде чем я сохранил его в графе следующим образом:

User retrieved_user = userRepository.findByFacebook_id(me.getFacebook_id()); 
if(retrieved_user != null) { me.setNodeId(retrieved_user.getNodeId()); }

Теперь, когда я вхожу в систему, он не создает дубликат узла, он просто обновляет свойства существующего узла.

Но это не то, что я ищу, потому что, когда я импортирую другие данные, такие как список друзей, для создания которых может быть около 1000 узлов, я не хочу, чтобы мое приложение проверяло каждый отдельный узел на его наличие в базе данных перед этим. сохраняет это.

Моя точка зрения: если есть способ, которым я могу вручную установить nodeId, прежде чем я template.save(me) проблема была бы решена, и мое приложение не должно было бы проверять, существует ли узел в графе. Так что, если это выполнимо, пожалуйста, помогите мне достичь этого. Я пробовал например setHighId(215431323), но я получаю исключения. Я пытался @Override IdGenerator, EntityIdGenerator и т. д., но безуспешно.

Если есть другой способ, которым я могу сохранить пользователей, не проверяя, существуют ли они, и избегать дублирования узлов, пожалуйста, дайте мне знать.
Спасибо

1 ответ

Я не думаю, что есть способ установить идентификатор вручную. Но даже если бы это было так, вам все равно пришлось проверить, существует ли ваш узел. Проверка на наличие узла в любом случае не так уж дорога, это просто проверка индекса, поэтому она должна быть O(log n).

Другие вопросы по тегам