2
votes

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
3
Is your Neo4j server running?Michael Hunger
yes i started and localhost:7474 i have checked it was runningarun kumar
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 millisecondsLuanne
] (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 millisecondsarun kumar
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

3 Answers

2
votes

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.

1
votes

I suggest you to provide credentials thru RemoteServer object

public Neo4jServer neo4jServer() {
    return new RemoteServer(NEO4J_HOST + NEO4J_PORT, "neo4j", "12345");
}
1
votes

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.