2

Spring data neo4j 4.0.0 Release

In spring mvc project i am trying to save a node by repository.save() method i am getting error.

@NodeEntity
public class Category
{

    @GraphId
    public Long id;

    public String categoryName;

    public Category()
    {
    }
    public Category( Long id, String categoryName )
    {
        this.id = id;
        this.categoryName = categoryName;
    }
}

    @Configuration
    @EnableNeo4jRepositories("org.neo4j.example.northwind.repository")
    @EnableTransactionManagement
    public class AppContext extends Neo4jConfiguration
    {
        public static final String NEO4J_HOST = "http://localhost:";
        public static final int    NEO4J_PORT = 7474;
        @Override
        public SessionFactory getSessionFactory() {
            System.setProperty("username", "neo4j");
            System.setProperty("password","12345");
            return new SessionFactory("org.neo4j.example.northwind.model");
        }
        @Bean
        @Override
        public Neo4jServer neo4jServer() {
            return new RemoteServer(NEO4J_HOST + NEO4J_PORT);
        }
        @Bean
        @Override
        //@Scope(value = "session", proxyMode = ScopedProxyMode.TARGET_CLASS)
        public Session getSession() throws Exception {
            return super.getSession();
        }
    }

Here is the stacktrace

[org.neo4j.ogm.session.Neo4jSession] (default task-5) org.neo4j.example.northwind.model.Category is not an instance of a persistable class
07:25:55,724 INFO  [stdout] (default task-5) org.neo4j.example.northwind.model.Category@54c0a7da
07:25:56,064 ERROR [io.undertow.request] (default task-5) UT005023: Exception handling request to /test: org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.neo4j.ogm.session.result.ResultProcessingException: Failed to execute request: 
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:973)
    at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:852)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:687)
    at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:837)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
    at io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:86)
    at io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62)
    at io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)
    at org.wildfly.extension.undertow.security.SecurityContextAssociationHandler.handleRequest(SecurityContextAssociationHandler.java:78)
    at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
    at io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:131)
    at io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57)
    at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
    at io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46)
    at io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64)
    at io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:58)
    at io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:72)
    at io.undertow.security.handlers.NotificationReceiverHandler.handleRequest(NotificationReceiverHandler.java:50)
    at io.undertow.security.handlers.SecurityInitialHandler.handleRequest(SecurityInitialHandler.java:76)
    at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
    at org.wildfly.extension.undertow.security.jacc.JACCContextIdHandler.handleRequest(JACCContextIdHandler.java:61)
    at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
    at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
    at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:282)
    at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:261)
    at io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:80)
    at io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:172)
    at io.undertow.server.Connectors.executeRootHandler(Connectors.java:199)
    at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:774)
    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:745)
Caused by: org.neo4j.ogm.session.result.ResultProcessingException: Failed to execute request: 
    at org.neo4j.ogm.session.transaction.TransactionManager.executeRequest(TransactionManager.java:128)
    at org.neo4j.ogm.session.transaction.TransactionManager.commit(TransactionManager.java:86)
    at org.neo4j.ogm.session.transaction.LongTransaction.commit(LongTransaction.java:37)
    at org.springframework.data.neo4j.transaction.Neo4jTransactionManager.commit(Neo4jTransactionManager.java:49)
    at org.springframework.transaction.interceptor.TransactionAspectSupport.commitTransactionAfterReturning(TransactionAspectSupport.java:521)
    at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:291)
    at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
    at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:644)
    at org.neo4j.example.northwind.controller.IndexController$$EnhancerBySpringCGLIB$$c48f93ec.cat(<generated>)
    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:497)
    at org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:215)
    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:749)
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:690)
    at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:83)
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:945)
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:876)
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:961)
    ... 31 more
Caused by: org.apache.http.client.HttpResponseException: Not Found
    at org.neo4j.ogm.session.transaction.TransactionManager.executeRequest(TransactionManager.java:106)
    ... 53 more
Michael Hunger
  • 41,339
  • 3
  • 57
  • 80
arun kumar
  • 247
  • 2
  • 5
  • 15
  • Is your Neo4j server running? – Michael Hunger Sep 20 '15 at 18:24
  • yes i started and localhost:7474 i have checked it was running – arun kumar Sep 21 '15 at 02:43
  • 4
    Looks like it can't find your entity in the metadata. Can you check how many classes are loaded when your app starts? e.g. INFO o4j.ogm.metadata.info.ClassFileProcessor: 159 - Post-processing complete INFO o4j.ogm.metadata.info.ClassFileProcessor: 61 - 5 classes loaded in 17 milliseconds – Luanne Sep 21 '15 at 10:30
  • ] (ServerService Thread Pool -- 19) Post-processing complete 21:19:18,690 INFO [org.neo4j.ogm.metadata.info.ClassFileProcessor] (ServerService Thread Pool -- 19) 0 classes loaded in 4 milliseconds – arun kumar Sep 21 '15 at 15:52
  • There seem to be at least 2 problems here. The first is that your domain classes are not being scanned at startup, the second is that the Neo4j server can't be found. From the stacktrace it seems as if you're running your app inside JBoss? The 404 would indicate to me that all the OGM http requests are being intercepted by that server. Please could you check your config, turn on debug logging for the OGM, start your JBoss server again and post the stacktrace here. – Vince Sep 22 '15 at 08:03
  • Also, probably related: http://stackoverflow.com/questions/32490795/neo4j-in-jee-jboss-environment – Vince Sep 22 '15 at 08:11
  • same application i tried to save using tomact server it is working fine. i faced the above issue in wildfly server.https://github.com/neo4j/neo4j-ogm/issues/48 – arun kumar Sep 24 '15 at 10:40

3 Answers3

2

You should extend Neo4jConfiguration to your config file and override below method:

@Override
public SessionFactory getSessionFactory() {
    return new SessionFactory("com.neo.entity.neo");
}

Note, com.neo.entity.neo is package name of entity.

Vladimir Vagaytsev
  • 2,871
  • 9
  • 33
  • 36
1

I suggest you to provide credentials thru RemoteServer object

public Neo4jServer neo4jServer() {
    return new RemoteServer(NEO4J_HOST + NEO4J_PORT, "neo4j", "12345");
}
MicTech
  • 42,457
  • 14
  • 62
  • 79
1

Adding just @EntityScan to my configurtion and specifying the packages to scan worked for me.

I am using Spring Boot 1.4.0 along with Neo4j 2.0.4.