【问题标题】:Java Object Mapping on Neo4j in play framework using restapifacade使用restapifacade在播放框架中的Neo4j上的Java对象映射
【发布时间】:2015-03-03 11:55:11
【问题描述】:

有一个Country 类:

public class Country { 
    public int id;  
    public String name;
    public String locale;
}

我必须插入neo4j。

我在做什么:

public void insert(Country country) {
        engine.query("create (n:Country {name:'"+country.name+"',id:"+country.id+",locale:'"+country.locale+"'})",null);
}

但是我想把 Object 直接放到带有标签的 neo4j 中。

我正在使用带有 java 1.8 和 libraryDependencies 的 play framework 2.3.7

"org.neo4j" % "neo4j-rest-graphdb" % "2.0.1",
  "com.sun.jersey" % "jersey-server" % "1.7",
  "com.sun.jersey" % "jersey-core" % "1.7",
  "com.sun.jersey" % "jersey-json" % "1.7",

【问题讨论】:

    标签: java playframework neo4j cypher spring-data-neo4j


    【解决方案1】:

    您可以使用spring-data-neo4j 来满足您的要求。详细步骤是

    1.在build.sbt中添加依赖

          "org.springframework.data" % "spring-data-neo4j" % "3.2.2.RELEASE",
          "org.springframework.data" % "spring-data-neo4j-rest" % "3.2.2.RELEASE",
          "org.springframework.data" % "spring-data-neo4j-tx" % "3.2.2.RELEASE"
    
    1. Global.java

      public class Global extends GlobalSettings {
          private ApplicationContext ctx;
      
          @Override
          public void onStart(Application app) {
              ctx = new AnnotationConfigApplicationContext(Neo4jConfig.class);
          }
      
          @Override
          public <A> A getControllerInstance(Class<A> clazz) {
              return ctx.getBean(clazz);
          }
      
          @Override
          public void onStop(Application app){
              ((AnnotationConfigApplicationContext)ctx).close();
          }
      

      }

    2. Neo4j 连接的配置类

      @Configuration
      @EnableTransactionManagement
      public class Neo4jConfig extends Neo4jConfiguration {
      
            public Neo4jConfig() {
                setBasePackage("model");// My Entity package
            }     
         @Bean
         public SpringRestGraphDatabase graphDatabaseService() {      
              return new SpringRestGraphDatabase("http://localhost:7474/db/data");
        }   
        @Override
        @Bean(name = "transactionManager")
        public PlatformTransactionManager neo4jTransactionManager() throws Exception {
           return new JtaTransactionManagerFactoryBean(getGraphDatabaseService()).getObject();
        }    
      }
      
    3. 使用 NodeEntity 注释您的国家/地区类

      @NodeEntity
      public class Country{ 
          public int id;  
          public String name;
          public String locale;
      }
      
    4. 使用 Neo4jTemplate 将对象保存到 Graph DB

      @Autowired
      Neo4jTemplate template;
      
      public Country save(Country country){
          return template.save(country);
      }
      

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多