2012-04-09 3 views
1

나는 내 페이스 북 계정으로 로그인 페이스 북은 내가 너무 같은 User.class (나)에 투사합니다 JSON 느릅 나무 같은 내 페이스 북의 데이터 나에게 JSON을 반환하는 페이스 북의 응용 프로그램을 개발하고 :수동으로 노드를 만들 때 neo4j 그래프에서 nodeId를 설정할 수 있습니까?

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

template.save(me); 예를 들어 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()); } 

, 그것은 중복 노드를 만들지 않습니다, 그것을 : 난과 같이 그래프를 저장하기 전에

나는 사용자가 allready 그래프에 존재하는지 확인하여이 문제를 피할 수 기존 노드의 속성 만 업데이트합니다.

그러나 이것은 내가 찾고있는 것이 아니기 때문에 친구 목록과 같은 다른 dara를 가져올 때 만들 수있는 노드가 약 1000 개가 될 수 있으므로 내 앱이 자신의 존재를 확인하기 위해 개별 노드를 확인하지 않아야합니다. 그것을 저장하기 전에 데이터베이스.

내 요점은 : 내가 수동으로 nodeId를 설정할 수있는 방법이 있다면 template.save(me) 전에 문제가 해결 될 것이고 내 응용 프로그램은 노드가 그래프에 있는지 확인하지 않아도됩니다. 그래서 이것이 가능하다면 그것을 성취하도록 도와주세요. 예를 들어 setHighId(215431323)을 시도했지만 예외가 발생합니다. 나는 @Override IdGenerator, EntityIdGenerator 등을 시도했지만 성공하지 못했습니다.

사용자가 존재하는지 확인하지 않고도 노드를 중복 제거하지 않고도 사용자를 저장할 수있는 또 다른 방법이 있다면 알려주십시오.
감사합니다.

+0

여기에 답하십시오 : https://github.com/SpringSource/spring-data-neo4j/issues/36#issuecomment-5055184 –

답변

1

수동으로 ID를 설정하는 방법은 없다고 생각합니다. 그러나 존재할지라도 노드가 있는지 계속 확인해야했습니다. 노드의 존재 여부를 확인하는 것은 비용이 많이 들지 않습니다. 단지 인덱스 검사이므로 O (log n) 여야합니다.

관련 문제