Entity не является экземпляром сохраняемого класса NEO4J 4.0.0

Весенние данные neo4j 4.0.0 Release

В весеннем проекте mvc я пытаюсь сохранить узел методом репозитория.save(), я получаю сообщение об ошибке.

@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();
        }
    }

Вот трассировка стека

[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

person arun kumar    schedule 20.09.2015    source источник
comment
Ваш сервер Neo4j работает?   -  person Michael Hunger    schedule 20.09.2015
comment
да, я запустил, и localhost: 7474 я проверил, он работает   -  person arun kumar    schedule 21.09.2015
comment
Похоже, он не может найти вашу сущность в метаданных. Можете ли вы проверить, сколько классов загружается при запуске вашего приложения? например INFO o4j.ogm.metadata.info.ClassFileProcessor: 159 — Постобработка завершена INFO o4j.ogm.metadata.info.ClassFileProcessor: 61 — 5 классов загружаются за 17 миллисекунд   -  person Luanne    schedule 21.09.2015
comment
] (Пул потоков ServerService -- 19) Постобработка завершена 21:19:18,690 INFO [org.neo4j.ogm.metadata.info.ClassFileProcessor] (Пул потоков ServerService -- 19) 0 классов загружено за 4 миллисекунды   -  person arun kumar    schedule 21.09.2015
comment
Тут как минимум 2 проблемы. Во-первых, ваши доменные классы не сканируются при запуске, во-вторых, сервер Neo4j не может быть найден. Из трассировки стека кажется, что вы запускаете свое приложение внутри JBoss? Ошибка 404 указывает мне, что все http-запросы OGM перехватываются этим сервером. Пожалуйста, не могли бы вы проверить свою конфигурацию, включить ведение журнала отладки для OGM, снова запустить сервер JBoss и опубликовать здесь трассировку стека.   -  person Vince    schedule 22.09.2015
comment
Также, вероятно, связано: stackoverflow.com/questions/32490795/   -  person Vince    schedule 22.09.2015
comment
то же приложение, которое я пытался сохранить с помощью сервера tomact, работает нормально. я столкнулся с вышеуказанной проблемой на сервере wildfly. /48   -  person arun kumar    schedule 24.09.2015


Ответы (3)


Вы должны расширить Neo4jConfiguration в свой файл конфигурации и переопределить метод ниже:

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

Обратите внимание, com.neo.entity.neo — это имя пакета объекта.

person user3814933    schedule 26.08.2016

Я предлагаю вам предоставить учетные данные через объект RemoteServer

public Neo4jServer neo4jServer() {
    return new RemoteServer(NEO4J_HOST + NEO4J_PORT, "neo4j", "12345");
}
person MicTech    schedule 21.09.2015

Добавление только @EntityScan в мою конфигурацию и указание пакетов для сканирования сработало для меня.

Я использую Spring Boot 1.4.0 вместе с Neo4j 2.0.4.

person Petar Mitrovic    schedule 15.03.2017