복붙노트

[SPRING] Spring 데이터 Neo4J 저장소 findAll ()은 nullpointerexception을 발생시킵니다.

SPRING

Spring 데이터 Neo4J 저장소 findAll ()은 nullpointerexception을 발생시킵니다.

내 시스템에있는 모든 사람을 포함하는 간단한 저장소를 만들었습니다. 모든 것이 잘 작동하는 것 같습니다. 주어진 키와 값을 기반으로 한 사람을 추가, 제거 및 검색 할 수는 있지만 어떤 이유로 저장소에 저장된 모든 사람을 직접 검색 할 수는 없습니다. 필자는 iterable을 반환해야하는 findAll () 메서드를 사용하여이 작업을 시도했습니다. 그런 다음 반복 가능한 함수로 반복하고 각 함수를 반환하려는 arraylist에 저장합니다.

    public List<Person> getAllPersons() {
    Iterable<Person> p = personRepository.findAll();
    System.out.println("person count: " + personRepository.count());
    List<Person> persons = new ArrayList<Person>();
    for (Person person : p) {
        System.out.println("person");
        persons.add(person);
    }
    return persons;
}

printline은 "3"을 출력하므로 저장소가 비어 있지 않지만 아래 오류에서 여전히 nullpointerexception이 발생합니다.

apr 16, 2014 3:45:54 PM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet [bmsapp] in context with path [/bmsapp] threw exception [Request processing failed; nested exception is org.neo4j.graphdb.TransactionFailureException: Failed to mark transaction as rollback only.] with root cause
java.lang.NullPointerException
    at org.neo4j.kernel.TopLevelTransaction.markAsRollbackOnly(TopLevelTransaction.java:93)
    at org.neo4j.kernel.TopLevelTransaction.failure(TopLevelTransaction.java:86)
    at org.neo4j.cypher.internal.spi.v2_0.TransactionBoundExecutionContext.close(TransactionBoundExecutionContext.scala:58)
    at org.neo4j.cypher.internal.compiler.v2_0.spi.DelegatingQueryContext.close(DelegatingQueryContext.scala:32)
    at org.neo4j.cypher.internal.compiler.v2_0.spi.ExceptionTranslatingQueryContext.org$neo4j$cypher$internal$compiler$v2_0$spi$ExceptionTranslatingQueryContext$$super$close(ExceptionTranslatingQueryContext.scala:34)
    at org.neo4j.cypher.internal.compiler.v2_0.spi.ExceptionTranslatingQueryContext$$anonfun$close$1.apply$mcV$sp(ExceptionTranslatingQueryContext.scala:34)
    at org.neo4j.cypher.internal.compiler.v2_0.spi.ExceptionTranslatingQueryContext$$anonfun$close$1.apply(ExceptionTranslatingQueryContext.scala:34)
    at org.neo4j.cypher.internal.compiler.v2_0.spi.ExceptionTranslatingQueryContext$$anonfun$close$1.apply(ExceptionTranslatingQueryContext.scala:34)
    at org.neo4j.cypher.internal.compiler.v2_0.spi.ExceptionTranslatingQueryContext.org$neo4j$cypher$internal$compiler$v2_0$spi$ExceptionTranslatingQueryContext$$translateException(ExceptionTranslatingQueryContext.scala:149)
    at org.neo4j.cypher.internal.compiler.v2_0.spi.ExceptionTranslatingQueryContext.close(ExceptionTranslatingQueryContext.scala:34)
    at org.neo4j.cypher.internal.compiler.v2_0.ClosingIterator.failIfThrows(ClosingIterator.scala:94)
    at org.neo4j.cypher.internal.compiler.v2_0.ClosingIterator.next(ClosingIterator.scala:45)
    at org.neo4j.cypher.internal.compiler.v2_0.PipeExecutionResult.next(PipeExecutionResult.scala:168)
    at org.neo4j.cypher.internal.compiler.v2_0.PipeExecutionResult.next(PipeExecutionResult.scala:34)
    at scala.collection.Iterator$$anon$11.next(Iterator.scala:328)
    at scala.collection.convert.Wrappers$IteratorWrapper.next(Wrappers.scala:30)
    at org.neo4j.cypher.internal.compiler.v2_0.PipeExecutionResult$$anon$1.next(PipeExecutionResult.scala:76)
    at org.neo4j.helpers.collection.IteratorWrapper.next(IteratorWrapper.java:47)
    at org.neo4j.helpers.collection.IteratorWrapper.next(IteratorWrapper.java:47)
    at bmsapp.repository.NeoPersonDao.getAllPersons(NeoPersonDao.java:33)
    at bmsapp.service.SimplePersonManager.getPersons(SimplePersonManager.java:32)
    at bmsapp.web.HelloController.HelloHandler(HelloController.java:45)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:483)
    at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:175)
    at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:446)
    at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:434)
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:938)
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:870)
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:961)
    at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:852)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
    at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:837)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:744)

이 문제를 해결하기 위해 이미 운이 없으면서 시간 낭비했습니다. 아무도 나 좀 도와 줄래?

해결법

  1. ==============================

    1.personRepository.findAll ()을 @Transactional으로 표시해보십시오.

    personRepository.findAll ()을 @Transactional으로 표시해보십시오.

    그래도 작동하지 않으면 personRepository.findAll () 메소드 plz를 게시 할 수 있습니까?

  2. ==============================

    2.답변 주셔서 감사합니다! 나는이 문제를 해결하기 위해

    답변 주셔서 감사합니다! 나는이 문제를 해결하기 위해

    "<tx:annotation-driven mode="proxy"/>
    

    내 응용 프로그램 컨텍스트 xml 파일. 이제 완벽하게 작동합니다! 그러나 나는 아직도이 statemant가 무엇인지, 왜 findAll () 메소드에만 필요하고 다른 것들은 사용하지 않았는지 확실하지 않다. (count (), findOne (), findBySchemaPropertyValue () 등)

  3. ==============================

    3.나는 모드 = "프록시"를 시도하고 그것은 나를 위해 작동하지 않았다, 당신은 비 주입 된 트랜잭션 방식을 사용하여 서로 (여기 설명)를 호출하는 경우에만 영향을 미쳐야한다.

    나는 모드 = "프록시"를 시도하고 그것은 나를 위해 작동하지 않았다, 당신은 비 주입 된 트랜잭션 방식을 사용하여 서로 (여기 설명)를 호출하는 경우에만 영향을 미쳐야한다.

    이 'TransactionFailureException'은 아마도 https://jira.spring.io/browse/DATAGRAPH-531과 관련된 문제 일 것입니다. 그렇다면 변경해야합니다.

    service.findAll()
    

    에:

    service.findAll().as(Collection.class)
    

    ... 그리고 그것은 사라져야합니다.

  4. from https://stackoverflow.com/questions/23111863/spring-data-neo4j-repository-findall-results-in-a-nullpointerexception by cc-by-sa and MIT license