2016-12-12 5 views
1

내가 2 노드 A를 사이에 관계를 만들려고 해요와 BNeo4j OGM은 - 깊이 1 만 관계

잠재적으로는 연결의 수백이 있고 B가 새로 만든 노드가 될 수있는 관계를 저장합니다.

내가 지금 그것을하고 있어요 방법은의 자식으로 B를 추가 한 후 1

몇 가지 예를 그루비 코드의 깊이와 절약, 1의 깊이 로딩 (A)에 의해입니다

def B = neo4jOperations.save(new B(), 0) 
def A = neo4jOperations.load(A, idOfA, 1) 
A.relationshipList().add(B) 
neo4jOperations.save(A, 1) // This turns out to be slow since it is saving all the @EndNode of A, while it doesn't need to 

그러나 이것은 neo4j 로딩과 불필요한 노드 및 관계 저장 때문에 매우 느립니다. 하나의 노드, 즉 B를 기존 관계에 추가하는 데 관심이 있습니다.

반 패턴을 치고 있습니까? 아니면 이것이 작동하는 방식입니까? 이 작업을 수행하는 더 빠른 방법이 있습니까?

+0

몇 가지 코드를 공유 할 수 있습니까? "깊이 1로"로드/저장하면 무엇을 의미하는지 명확하지 않습니다. – cybersam

+0

@cybersam이 완료되었습니다. – Nerrve

답변

1

현재 OGM은 A의 모든 관계를로드하지만 이미 유지 된 경우에는 저장하지 않습니다. 이것은 느려서는 안됩니다 (어떤 버전을 사용합니까?). 해결 방법/해킹은 Session으로 시도하고 A를 0으로로드 한 다음 B를 추가하고 저장합니다. 일이 끔찍하게 잘못 될 수 있기 때문에이 세션을 사용하지 마십시오. 더 좋은 방법은 샘플 코드를 보내고 문제를 열어 보는 것입니다. https://github.com/neo4j/neo4j-ogm

+0

새 세션을 말할 때, 내 작업을하기 전후에 neo4jOperations.clear()를 수행한다는 의미입니까? @luanne – Nerrve

+0

예, 시도해보십시오 – Luanne

+0

@Nerrve가 성공적 이었습니까? 나는 neo4j-ogm이 오래된 관계를 변함없는 것으로 보지 못하고 여전히 그것을 매핑하려고한다고 믿는 유사한 상황을보고있다. 나는 아직 그 원인을 찾을 수 없었다. – geld0r