Я могу вручную установить 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).