2016-03-11 1 views
0

Я использую Spring-data-neo4j, но отвечаю за следующую проблему.Карта Spring-data-neo4j не может быть добавлена ​​в nodeentity

Все работает нормально, пока я не хочу отбросить запрошенную ссылку LinkedHashMap в @NodeEntity. Вот код

Movie.class

@NodeEntity 
public class Movie { 
@GraphId Long id; 

@Property(name="title") 
private String mtitle; 

@Property(name="released") 
private String mreleased; 

@Property(name="tagline") 
private String mtagline; 

@Relationship(type = "REVIEWED", direction = Relationship.INCOMING) 
private Set<Movie> reviewed; 

@Relationship(type = "ACTED_IN", direction = Relationship.INCOMING) 
private Set<Movie> actedIn; 

@Relationship(type = "DIRECTED", direction = Relationship.INCOMING) 
private Set<Movie> directed; 
} 

Они хранилище

@Repository 
public interface MovieRepository extends GraphRepository<Movie>{ 
    @Query("MATCH (n) WHERE id(n)={0} RETURN n") 
    Movie getMovieFromId(Integer idOfMovie); 
} 

При использовании getMovieFromId() на службе, я получаю исключение:

java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to com.hersbitcloud.cancercloud.domain.Movie 
com.sun.proxy.$Proxy55.getMovieFromId(Unknown Source) 
com.hersbitcloud.cancercloud.services.GLService.getGL(GLService.java:24) 
com.hersbitcloud.cancercloud.controllers.GLController.getGLOverview(GLController.java:22) 
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
java.lang.reflect.Method.invoke(Method.java:497) 
org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:222) 
org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:137) 
org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:110) 
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:814) 
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:737) 
org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85) 
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:959) 
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:893) 
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970) 
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:861) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:622) 
org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:729) 
org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:77) 
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) 
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 
org.springframework.web.filter.HttpPutFormContentFilter.doFilterInternal(HttpPutFormContentFilter.java:87) 
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) 

Узел фильма в neo4j содержит свойство «title», «release», «tagline» и отношение «ACTED_IN», «НАПРАВЛЕНО» и «ОБЗОР».

BTW, если я изменяю тип репозитория от Movie до HashMap, исключение прошло.

Любая помощь будет оценена по достоинству.

+0

Можете ли вы показать, как выглядит определение хранилища, а также больше из stacktrace? – Luanne

+0

@Luanne Я добавил полную версию репозитория и исключение. –

+0

Нет ли части stacktrace от org.neo4j.ogm? – Luanne

ответ

5

Пожалуйста, проверьте, включен ли пакет Movie в те, что были предоставлены SessionFactory. OGM будет отображать объект, если он знает, что это объект домена (то есть проверяется при создании экземпляра SessionFactory), в противном случае он просто отправит обратно карту данных.