2013-08-16 6 views
0

나는 사용자를 얻고 데이터베이스에 추가하기 위해 스프링 소셜을 사용하고 있지만 컴파일 할 때마다 앱이 실행되면이 오류가 발생합니다. 내 수업은 오류 아래에 있습니다. 여기 스프링 Neo4j 템플릿에서 Null 포인터 예외를 throw합니다

SEVERE: Servlet.service() for servlet [appServlet] in context with path [/see-my-style] threw exception [Request processing failed; nested exception is java.lang.NullPointerException] with root cause 
java.lang.NullPointerException 
    at org.springframework.data.neo4j.support.Neo4jTemplate.getMappingPolicy(Neo4jTemplate.java:486) 
    at org.springframework.data.neo4j.support.Neo4jTemplate.getMappingPolicy(Neo4jTemplate.java:656) 
    at org.springframework.data.neo4j.support.Neo4jTemplate.save(Neo4jTemplate.java:293) 
    at org.springframework.data.neo4j.support.Neo4jTemplate.save(Neo4jTemplate.java:287) 
    at org.springframework.social.quickstart.HomeController.home(HomeController.java:64) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:601) 
    at org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:219) 
    at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:132) 
    at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:104) 
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:745) 
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:686) 
    at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:80) 
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:925) 
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:856) 
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:936) 
    at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:827) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:621) 
    at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:812) 
    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.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:77) 
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
    at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88) 
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) 
    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:502) 
    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:953) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) 
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1023) 
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589) 
    at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:1852) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) 
    at java.lang.Thread.run(Thread.java:722) 

확실히 친구가 @NodeEntity로 주석되어 있는지 확인

package org.springframework.social.quickstart; 

import java.util.List; 

import javax.inject.Inject; 
import org.neo4j.graphdb.GraphDatabaseService; 
import org.neo4j.graphdb.factory.GraphDatabaseFactory; 
import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.context.annotation.ImportResource; 
import org.springframework.data.neo4j.support.Neo4jTemplate; 
import org.springframework.data.neo4j.template.Neo4jOperations; 

import org.springframework.social.facebook.api.Facebook; 
import org.springframework.social.facebook.api.FacebookProfile; 
import org.springframework.social.facebook.api.PagedList; 
import org.springframework.social.facebook.api.Reference; 
import org.springframework.social.quickstart.repository.PersonRepository; 
import org.springframework.stereotype.Controller; 
import org.springframework.stereotype.Service; 
import org.springframework.transaction.annotation.Transactional; 
import org.springframework.ui.Model; 
import org.springframework.web.bind.annotation.RequestMapping; 
import org.springframework.web.bind.annotation.RequestMethod; 

/** 
* Simple little @Controller that invokes Facebook and renders the result. 
* The injected {@link Facebook} reference is configured with the required authorization credentials for the current user behind the scenes. 
* @author Keith Donald 
*/ 
@Controller 
public class HomeController { 

    private final Facebook facebook; 
     private static final String DB_PATH = "target/neo4j-hello-db"; 
     GraphDatabaseService graphDb = new GraphDatabaseFactory().newEmbeddedDatabase(DB_PATH); 

     Neo4jOperations neo = new Neo4jTemplate(graphDb); 


    @Inject 
    public HomeController(Facebook facebook) { 
     this.facebook = facebook;  
    } 

    @RequestMapping(value = "/", method = RequestMethod.GET) 
    public String home(Model model) { 
     List<Reference> friends = facebook.friendOperations().getFriends(); 

       for(Reference friend: friends) 
       { 
        neo.save(friend.getName()); 
       } 
     return "home"; 
    } 

답변

1
  1. 작업 클래스 메신저입니다.
  2. 맵핑을 알 수 있도록 모든 노드 엔티티의 위치 (패키지)를 지정하십시오.
  3. 대신 자신 DB 그래프를 만드는, 당신이 이름 대신 Friend 엔티티를 저장해야한다고 생각 봄 당신 (사용 neo4j 네임 스페이스)
  4. 을 위해 그것을 관리 할 수 ​​있습니다. 즉 아래를 변경하십시오.

    neo.save (friend.getName());

    neo.save(friend); 
    

관련 문제