Neo4J SDN 4 无法保存

Neo4J SDN 4 Unable to save

这是我的配置

@EnableTransactionManagement
@EnableScheduling
@EnableAutoConfiguration
@ComponentScan(basePackages = {"id.co.babe.neo4j.service"})
@Configuration

public class MyNeo4jConfiguration extends Neo4jConfiguration {
  private static final Logger LOGGER = LoggerFactory.getLogger(MyNeo4jConfiguration.class);

  @Value("${neo4j.server.user}")
  private String user;
  @Value("${neo4j.server.pass}")
  private String pass;
  @Value("${neo4j.server.host}")
  private String host;

 @Override
 public Neo4jServer neo4jServer() {
     return new RemoteServer(host,user,pass);
 }

 @Override
 public SessionFactory getSessionFactory() {
     return new SessionFactory("app.neo4j.domain");
 }

 @Bean
 @Primary
 public Neo4jOperations getNeo4jTemplate() throws Exception {
     return new Neo4jTemplate(getSession());
 }

这是我的域用户

@NodeEntity
public class User{
  @GraphId
  private Long Id;
  private String name;
  private int age;
  private String country;

和我的服务接口

public interface UserService { 
  public User create(User user);
  public User read(User user);
  public List<User> readAll();
  public User update(User user);
  public Boolean delete(User user);
}

和我的实现

@Service
@Transactional
public class UserServiceImpl implements UserService{

  @Autowired
  Neo4jOperations template;

  @Override
  public User create(User user){
    return template.save(user);
  }

这是我的主要class

for(int i = 0; i < 10; i++){
  app.neo4j.domain.User user = new app.neo4j.domain.User();
  user.setAge(13);
  user.setCountry("Philly");
  user.setId(i);
  user.setName("Ibanez" + i);
  LOGGER.info("Inserting {}",user.getName());
  service.create(user);
}

没有发现错误,但是当我转到 neo4j 控制台 (localhost:7474) 时,运行 此查询匹配 (n) return n,应该 return 数据库中的所有节点。不幸的是,即使我能够没有错误地保存,也没有找到节点。我想知道出了什么问题。

我也试过用 @enablingNeo4jRepositories 做,结果没有什么不同。

您的代码永远不应设置 @GraphId 字段的值。此字段在内部用于将实体附加到图形。

如果您删除 user.setId(i);,您的实体应该会正确保存。

请注意,您可以添加自己的自定义 ID 字段,但您仍然需要为 GraphID 添加另一个字段,例如

@GraphId private Long graphId; //used internally, never assign a value
private Long id; //your application id, stored as a property on the entity