Я разрабатываю приложение 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
.
Проблема в том, что когда я снова вхожу в систему, он создает еще один узел с теми же свойствами и nodeId: 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 и т. д., но безуспешно.
Если есть другой способ, с помощью которого я могу сохранять пользователей, не проверяя, существуют ли они, и избегая дублирования узлов, сообщите мне об этом.