Spring Data Neo4j 4 не хранит никаких данных

Я использую neo4j-2.3.1 и spring-data-neo4j 4 в своем новом проекте. Я настроил все как этот post (Spring Data Neo4j 4). Однако я не могу иметь какое-либо хранилище данных в базе данных. Вот моя конфигурация neo4j:

@Configuration
@EnableNeo4jRepositories("org.drexel.cas.repository")
@EnableTransactionManagement
@ComponentScan("org.drexel.cas")
public class RootConfig extends Neo4jConfiguration {
    @Override
    public SessionFactory getSessionFactory() {
        return new SessionFactory("org.drexel.cas.domain");
    }
    @Bean
    public Neo4jServer neo4jServer() {
        return new RemoteServer("http://localhost:7474", "neo4j", "xxxxxx");
    }
    @Override
    @Bean
    @Scope(value = "session", proxyMode = ScopedProxyMode.TARGET_CLASS)
    public Session getSession() throws Exception {
        return super.getSession();
    }
}

Вот API REST, и он просто вызывает репозиторий для хранения объекта:

@Autowired
ProjectRepository repository;

@RequestMapping(value = "project", method = POST, consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<Project> create(@RequestBody Map<String, Object> param) {
    Project project = new Project(param);
    repository.save(project);
    return ResponseEntity.ok(project);
}

Вот репозиторий:

@Repository
@Transactional
public interface ProjectRepository extends GraphRepository<Project> {

}

Это класс проекта:

@NodeEntity
public class Project {
@GraphId
private Long id;
@Convert(MapJson.class)
private Map<String, Object> attributes;

public Project() {
    this.attributes = new HashMap<>();
}

public Project(Map<String, Object> params) {
    id = System.currentTimeMillis();
    this.attributes = params;
}

public boolean equals(Object object) {
    if (object == null)
        return false;
    if (!(object instanceof Project))
        return false;
    Project other = (Project) object;
    if (!other.getId().equals(this.id))
        return false;
    return true;
}

public int hashCode() {
    return this.id.hashCode();
}

}

Вот класс преобразователя:

public class MapJson implements AttributeConverter<Map<String, Object>, String> {

    @Override
    public String toGraphProperty(Map<String, Object> value) {
        Gson gson = new Gson();
                Type type = new TokenType<Map<String, Object>>(){}.getType();
                return gson.toJson(value, type);
           }

           @Override
           public Map<String, Object> toEntityAttribute(String value) {
                Gson gson = new Gson();
                Type type = new TokenType<Map<String, Object>>(){}.getType();
                return gson.fromJson(value, type);
           }

        }

После того как делаю curl пост, все работает нормально и никаких исключений и ошибок нет. И затем я захожу на localhost: 7474, получаю все данные, но ничего не получаю. Вот лог, я сделал curl post и curl получился. Нет никаких исключений

    Dec 18, 2015 12:33:10 AM org.apache.tomcat.util.digester.SetPropertiesRule begin
    WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.j2ee.server:dummy' did not find a matching property.
    Dec 18, 2015 12:33:10 AM org.apache.catalina.startup.VersionLoggerListener log
    INFO: Server version:        Apache Tomcat/8.0.29
    Dec 18, 2015 12:33:10 AM org.apache.catalina.startup.VersionLoggerListener log
    INFO: Server built:          Nov 20 2015 09:18:00 UTC
    Dec 18, 2015 12:33:10 AM org.apache.catalina.startup.VersionLoggerListener log
    INFO: Server number:         8.0.29.0
    Dec 18, 2015 12:33:10 AM org.apache.catalina.startup.VersionLoggerListener log
    INFO: OS Name:               Mac OS X
    Dec 18, 2015 12:33:10 AM org.apache.catalina.startup.VersionLoggerListener log
    INFO: OS Version:            10.11.2
    Dec 18, 2015 12:33:10 AM org.apache.catalina.startup.VersionLoggerListener log
    INFO: Architecture:          x86_64
    Dec 18, 2015 12:33:10 AM org.apache.catalina.startup.VersionLoggerListener log
    INFO: Java Home:             /Library/Java/JavaVirtualMachines/jdk1.8.0_65.jdk/Contents/Home/jre
    Dec 18, 2015 12:33:10 AM org.apache.catalina.startup.VersionLoggerListener log
    INFO: JVM Version:           1.8.0_65-b17
    Dec 18, 2015 12:33:10 AM org.apache.catalina.startup.VersionLoggerListener log
    INFO: JVM Vendor:            Oracle Corporation
    Dec 18, 2015 12:33:10 AM org.apache.catalina.startup.VersionLoggerListener log
    INFO: CATALINA_BASE:         /Users/bondwong/Documents/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp10
    Dec 18, 2015 12:33:10 AM org.apache.catalina.startup.VersionLoggerListener log
    INFO: CATALINA_HOME:         /Users/bondwong/apache-tomcat-8.0.29
    Dec 18, 2015 12:33:10 AM org.apache.catalina.startup.VersionLoggerListener log
    INFO: Command line argument: -Dcatalina.base=/Users/bondwong/Documents/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp10
    Dec 18, 2015 12:33:10 AM org.apache.catalina.startup.VersionLoggerListener log
    INFO: Command line argument: -Dcatalina.home=/Users/bondwong/apache-tomcat-8.0.29
    Dec 18, 2015 12:33:10 AM org.apache.catalina.startup.VersionLoggerListener log
    INFO: Command line argument: -Dwtp.deploy=/Users/bondwong/Documents/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp10/wtpwebapps
    Dec 18, 2015 12:33:10 AM org.apache.catalina.startup.VersionLoggerListener log
    INFO: Command line argument: -Djava.endorsed.dirs=/Users/bondwong/apache-tomcat-8.0.29/endorsed
    Dec 18, 2015 12:33:10 AM org.apache.catalina.startup.VersionLoggerListener log
    INFO: Command line argument: -Dfile.encoding=UTF-8
    Dec 18, 2015 12:33:10 AM org.apache.catalina.core.AprLifecycleListener lifecycleEvent
    INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: /Users/bondwong/Library/Java/Extensions:/Library/Java/Extensions:/Network/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java:.
    Dec 18, 2015 12:33:10 AM org.apache.coyote.AbstractProtocol init
    INFO: Initializing ProtocolHandler ["http-nio-8080"]
    Dec 18, 2015 12:33:10 AM org.apache.tomcat.util.net.NioSelectorPool getSharedSelector
    INFO: Using a shared selector for servlet write/read
    Dec 18, 2015 12:33:10 AM org.apache.coyote.AbstractProtocol init
    INFO: Initializing ProtocolHandler ["ajp-nio-8009"]
    Dec 18, 2015 12:33:10 AM org.apache.tomcat.util.net.NioSelectorPool getSharedSelector
    INFO: Using a shared selector for servlet write/read
    Dec 18, 2015 12:33:10 AM org.apache.catalina.startup.Catalina load
    INFO: Initialization processed in 866 ms
    Dec 18, 2015 12:33:10 AM org.apache.catalina.core.StandardService startInternal
    INFO: Starting service Catalina
    Dec 18, 2015 12:33:10 AM org.apache.catalina.core.StandardEngine startInternal
    INFO: Starting Servlet Engine: Apache Tomcat/8.0.29
    Dec 18, 2015 12:33:16 AM org.apache.jasper.servlet.TldScanner scanJars
    INFO: At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.
    Dec 18, 2015 12:33:16 AM org.apache.catalina.core.ApplicationContext log
    INFO: Spring WebApplicationInitializers detected on classpath: [org.drexel.cas.Initializer@28630d24]
    Dec 18, 2015 12:33:16 AM org.apache.catalina.core.ApplicationContext log
    INFO: Initializing Spring root WebApplicationContext
    00:33:16.781 [localhost-startStop-1] INFO  o.s.web.context.ContextLoader - Root WebApplicationContext: initialization started
    00:33:16.884 [localhost-startStop-1] INFO  o.s.w.c.s.AnnotationConfigWebApplicationContext - Refreshing Root WebApplicationContext: startup date [Fri Dec 18 00:33:16 EST 2015]; root of context hierarchy
    00:33:16.972 [localhost-startStop-1] INFO  o.s.w.c.s.AnnotationConfigWebApplicationContext - Registering annotated classes: [class org.drexel.cas.RootConfig]
    00:33:17.435 [localhost-startStop-1] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'rootConfig' of type [class org.drexel.cas.RootConfig$$EnhancerBySpringCGLIB$$93dd11f8] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
    00:33:17.439 [localhost-startStop-1] INFO  o.s.d.n.config.Neo4jConfiguration - Initialising PersistenceExceptionTranslationPostProcessor
    00:33:17.534 [localhost-startStop-1] INFO  o.s.d.n.config.Neo4jConfiguration - Initialising Neo4jSession
    00:33:18.031 [localhost-startStop-1] INFO  o.n.o.m.info.ClassFileProcessor - Starting Post-processing phase
    00:33:18.031 [localhost-startStop-1] INFO  o.n.o.m.info.ClassFileProcessor - Building annotation class map
    00:33:18.032 [localhost-startStop-1] INFO  o.n.o.m.info.ClassFileProcessor - Building interface class map for 2 classes
    00:33:18.032 [localhost-startStop-1] INFO  o.n.o.m.info.ClassFileProcessor - Registering default type converters...
    00:33:18.032 [localhost-startStop-1] INFO  o.n.o.m.info.ClassFileProcessor - Post-processing complete
    00:33:18.032 [localhost-startStop-1] INFO  o.n.o.m.info.ClassFileProcessor - 2 classes loaded in 15 milliseconds
    00:33:18.215 [localhost-startStop-1] INFO  o.s.d.n.mapping.Neo4jMappingContext - Neo4jMappingContext initialisation completed
    00:33:18.359 [localhost-startStop-1] INFO  o.s.d.n.config.Neo4jConfiguration - Initialising PersistenceExceptionTranslator
    00:33:18.364 [localhost-startStop-1] INFO  o.s.d.n.config.Neo4jConfiguration - Initialising PersistenceExceptionTranslationInterceptor
    00:33:18.368 [localhost-startStop-1] INFO  o.s.d.n.config.Neo4jConfiguration - Initialising Neo4jTransactionManager
    00:33:18.377 [localhost-startStop-1] INFO  o.s.web.context.ContextLoader - Root WebApplicationContext: initialization completed in 1592 ms
    Dec 18, 2015 12:33:18 AM org.apache.catalina.core.ApplicationContext log
    INFO: Initializing Spring FrameworkServlet 'dispatcher'
    00:33:18.404 [localhost-startStop-1] INFO  o.s.web.servlet.DispatcherServlet - FrameworkServlet 'dispatcher': initialization started
    00:33:18.407 [localhost-startStop-1] INFO  o.s.w.c.s.AnnotationConfigWebApplicationContext - Refreshing WebApplicationContext for namespace 'dispatcher-servlet': startup date [Fri Dec 18 00:33:18 EST 2015]; parent: Root WebApplicationContext
    00:33:18.409 [localhost-startStop-1] INFO  o.s.w.c.s.AnnotationConfigWebApplicationContext - Registering annotated classes: [class org.drexel.cas.WebConfig]
    00:33:18.789 [localhost-startStop-1] INFO  o.s.w.s.m.m.a.RequestMappingHandlerMapping - Mapped "{[/dummy/{id:\d+}]}" onto public org.springframework.http.ResponseEntity<org.drexel.cas.domain.Dummy> org.drexel.cas.web.DummyService.get(java.lang.Long)
    00:33:18.790 [localhost-startStop-1] INFO  o.s.w.s.m.m.a.RequestMappingHandlerMapping - Mapped "{[/dummy],methods=[POST],consumes=[application/json],produces=[application/json]}" onto public org.springframework.http.ResponseEntity<org.drexel.cas.domain.Dummy> org.drexel.cas.web.DummyService.create(java.util.Map<java.lang.String, java.lang.Object>)
    00:33:18.814 [localhost-startStop-1] INFO  o.s.w.s.h.SimpleUrlHandlerMapping - Mapped URL path [/**] onto handler of type [class org.springframework.web.servlet.resource.DefaultServletHttpRequestHandler]
    00:33:18.851 [localhost-startStop-1] INFO  o.s.w.s.m.m.a.RequestMappingHandlerAdapter - Looking for @ControllerAdvice: WebApplicationContext for namespace 'dispatcher-servlet': startup date [Fri Dec 18 00:33:18 EST 2015]; parent: Root WebApplicationContext
    00:33:18.938 [localhost-startStop-1] INFO  o.s.web.servlet.DispatcherServlet - FrameworkServlet 'dispatcher': initialization completed in 534 ms
    Dec 18, 2015 12:33:18 AM org.apache.coyote.AbstractProtocol start
    INFO: Starting ProtocolHandler ["http-nio-8080"]
    Dec 18, 2015 12:33:18 AM org.apache.coyote.AbstractProtocol start
    INFO: Starting ProtocolHandler ["ajp-nio-8009"]
    Dec 18, 2015 12:33:18 AM org.apache.catalina.startup.Catalina start
    INFO: Server startup in 8483 ms
    create...
    get...

введите здесь описание изображения введите здесь описание изображения Исключений нет. Кто-нибудь знает, как это исправить?


person Junbang Huang    schedule 17.12.2015    source источник
comment
Пожалуйста, предоставьте больше информации. Как выглядит объект вашего проекта, как настроено SDN? Есть исключения в логах?   -  person Luanne    schedule 18.12.2015
comment
@Luanne Я добавляю информацию, которую вы просили. В логах исключений нет.   -  person Junbang Huang    schedule 18.12.2015
comment
А как выглядит ваш преобразователь?   -  person Luanne    schedule 18.12.2015
comment
@Luanne Я добавил свой конвертер, не думаю, что это вызывает проблему   -  person Junbang Huang    schedule 18.12.2015
comment
@Luanne Я добавил журнал. Я сделал завиток и получил завиток, и никаких исключений нет.   -  person Junbang Huang    schedule 18.12.2015
comment
Можете ли вы поделиться своим проектом где-нибудь?   -  person Luanne    schedule 18.12.2015
comment
@Luanne, конечно, я пересоберу его сегодня и поделюсь на github. Я дам тебе знать, когда закончу.   -  person Junbang Huang    schedule 18.12.2015
comment
@Luanne github.com/JavaEEBoy/dummy Я загружаю туда проект.   -  person Junbang Huang    schedule 18.12.2015
comment
Ответ от @ceic правильный, никогда не устанавливайте GraphId вручную   -  person Luanne    schedule 21.12.2015


Ответы (2)


Попробуйте не устанавливать значение свойства @GraphId самостоятельно.

public Project(Map<String, Object> params) {
    //id = System.currentTimeMillis();
    this.attributes = params;
}
person ceic    schedule 19.12.2015

Конвертер неправильный - он говорит конвертировать из Project в String вместо Map в String.

Уже существует ошибка, связанная с проблемами с дженериками, поэтому, пока это не будет исправлено, вам придется опустить их и использовать вместо этого:

@Convert(MapJson.class)
private Map attributes;

с преобразователем атрибутов

public class MapJson implements AttributeConverter<Map,String> {

    @Override
    public String toGraphProperty(Map value) {
        //do something
    }

    @Override
    public Map<String, Object> toEntityAttribute(String value) {
        //do something
    }
}
person Luanne    schedule 18.12.2015
comment
извините, это опечатка, я использовал AttributeConverter‹Map‹String, Object›, String›. Если у меня есть проблемы с дженериками, коды не могут быть скомпилированы. Тем не менее, я не получил никаких исключений - person Junbang Huang; 18.12.2015
comment
Когда я использую это, для меня определенно есть исключение во время выполнения. - person Luanne; 18.12.2015