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

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

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


person Tibi Munteanu    schedule 09.04.2012    source источник
comment
Ответ здесь: github.com/SpringSource/spring-data-neo4j /проблемы/   -  person Michael Hunger    schedule 11.04.2012


Ответы (1)


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

person drexin    schedule 10.04.2012