2016-07-10 4 views
0

와 NODE를로드 내가 가지고 다음 Neo4j 스키마 :스프링 데이터 Neo4j Neo.ClientError.Statement.EntityNotFound; 설명 : 없음 아이디

enter image description here

내가 사이퍼 쿼리와 다음 SDN 4.2.0.BUILD-SNAPSHOT 저장소와 노드를 삭제하기 위해 노력하고있어 :

@Query("MATCH (d:Decision) WHERE id(d) IN {decisionsIds} OPTIONAL MATCH (d)<-[:COMMENTED_ON*]-(com:Comment) DETACH DELETE com WITH d OPTIONAL MATCH (d)<-[:DEFINED_BY]-(c) WITH d, c OPTIONAL MATCH (c)<-[:VOTED_ON]-(vg) WITH d, c, vg OPTIONAL MATCH (vg)-[:CONTAINS]->(v) DETACH DELETE v, vg, c, d") 
void deleteDecisions(@Param("decisionsIds") List<Long> decisionsIds); 

지금이 메서드 실행 후 다음 예외가 발생합니다.

org.neo4j.ogm.exception.CypherException: Error executing Cypher; Code: Neo.ClientError.Statement.EntityNotFound; Description: Unable to load NODE with id 2157. 
    at org.neo4j.ogm.drivers.embedded.request.EmbeddedRequest.executeRequest(EmbeddedRequest.java:176) 
    at org.neo4j.ogm.drivers.embedded.request.EmbeddedRequest.execute(EmbeddedRequest.java:144) 
    at org.neo4j.ogm.session.delegates.ExecuteQueriesDelegate.query(ExecuteQueriesDelegate.java:93) 
    at org.neo4j.ogm.session.delegates.ExecuteQueriesDelegate.query(ExecuteQueriesDelegate.java:73) 
    at org.neo4j.ogm.session.Neo4jSession.query(Neo4jSession.java:313) 
    at org.springframework.data.neo4j.repository.query.GraphRepositoryQuery.execute(GraphRepositoryQuery.java:61) 
    at org.springframework.data.neo4j.repository.query.GraphRepositoryQuery.execute(GraphRepositoryQuery.java:52) 
    at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.doInvoke(RepositoryFactorySupport.java:482) 
    at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.invoke(RepositoryFactorySupport.java:460) 
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) 
    at org.springframework.data.projection.DefaultMethodInvokingMethodInterceptor.invoke(DefaultMethodInvokingMethodInterceptor.java:61) 
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) 
    at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:99) 
    at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:281) 
    at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96) 
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) 
    at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:136) 
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) 
    at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:92) 
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) 
    at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:213) 
    at com.sun.proxy.$Proxy125.deleteDecisions(Unknown Source) 

id가 2157 인 노드는 VoteGroup 엔티티입니다.

@NodeEntity 
public class VoteGroup extends BaseEntity { 

    private static final String VOTED_ON = "VOTED_ON"; 
    private final static String VOTED_FOR = "VOTED_FOR"; 
    private final static String CONTAINS = "CONTAINS"; 

    @Relationship(type = VOTED_FOR, direction = Relationship.OUTGOING) 
    private Decision decision; 

    @Relationship(type = VOTED_ON, direction = Relationship.OUTGOING) 
    private Criterion criterion; 

    @Relationship(type = CONTAINS, direction = Relationship.OUTGOING) 
    private Set<Vote> votes = new HashSet<>(); 

    private double avgVotesWeight; 

    private long totalVotesCount; 

    public VoteGroup() { 
    } 

    public VoteGroup(Decision decision, Criterion criterion, double avgVotesWeight, long totalVotesCount) { 
     this.decision = decision; 
     decision.addVoteGroup(this); 
     this.criterion = criterion; 
     criterion.addVoteGroup(this); 
     this.avgVotesWeight = avgVotesWeight; 
     this.totalVotesCount = totalVotesCount; 
    } 
... 
} 

@NodeEntity 
public class Vote extends Authorable { 

    private final static String CONTAINS = "CONTAINS"; 

    @Relationship(type = CONTAINS, direction = Relationship.INCOMING) 
    private VoteGroup group; 

    private double weight; 

    private String description; 

    public Vote() { 
    } 

    public Vote(VoteGroup group, User author, double weight, String description) { 
     this.group = group; 
     group.addVote(this); 
     setAuthor(author); 
     this.weight = weight; 
     this.description = description; 
    } 
... 
} 

내 쿼리에 어떤 문제가 :

이 나의 실체인가? 이것은 Neo4j 문제처럼 보인다

enter image description here

enter image description here

답변

1

는, 그것을 로그인하시기 바랍니다 :

내가 같은 결과를 독립 Neo4j 서버에서이 또한 시도

업데이트 https://github.com/neo4j/neo4j/issues에 EXPLAIN 계획 및 오류 메시지가 표시됩니다. 당신이 초기 의견을 삭제 삭제하고 마지막에 그들 모두를 할 경우

한편

, 당신이 앞으로 이동 할 수 있어야한다 :

MATCH (d:Decision) WHERE id(d) IN [155, 163, 144] 
OPTIONAL MATCH (d)<-[:COMMENTED_ON*]-(com:Comment) 
OPTIONAL MATCH (d)<-[:DEFINED_BY]-(c) 
OPTIONAL MATCH (c)<-[:VOTED_ON]-(vg) 
OPTIONAL MATCH (vg)-[:CONTAINS]->(v) 
DETACH DELETE v, vg, c, d,com 
0

은 내가 때문 정확히 같은 문제가 있었다 "neo4j-ogm-embedded-driver"버전을 사용하고 있습니다. 실수로 버전 2.0.5에서 "spring-data-neo4j" 이 (2.0.3) 버전을 덮어 썼습니다. 그리고 이것은 설명 된 문제 으로 이어진다.

관련 문제