Neo4j和Spring - 如何保存自动装配的属性

时间:2014-07-21 10:02:03

标签: java spring neo4j spring-data-neo4j

使用带有Neo4j的Spring组件时无法保存自动装配的属性。

我已经定义了一个抽象的实体类,其中包含图形ID:

@NodeEntity
public abstract class DBEntity {
  @GraphId private Long id;
}

有一个数据模型,父项和子项都定义为Spring组件。 我在这里简化了数据模型,实际上它是一个有几个子节点和级别的树:

@Component("DataModel")
@Scope("prototype")
public class DataModel extends DBEntity {
  @Autowired private DataStructure dataStructure;
  public TestDataStructure testDataStructure;
}

@Component("DataStructure")
@Scope("prototype")
public class DataStructure extends DBEntity {
  ...
}

出于测试目的,我还定义了一个没有Spring注释的测试数据结构:

public class TestDataStructure extends DBEntity {
  private String test;
  public TestDataStructure() {
    this.test = "test";
  }
}

以下是我的存储库和数据库服务实现的定义:

@Repository
public interface DataModelRepository extends GraphRepository<DBEntity> {
  DBEntity save(DBEntity entity);
}

public class DatabaseServiceImpl implements DatabaseService {
  @Autowired private DataModelRepository modelRepository;
  public void putModel(DBEntity entity) {
   modelRepository.save(Entity);    
  }
}

现在,当我使用Spring管理的DataModel实例调用putModel时,它将保存 DataModel实例以及TestDataStructure的实例作为具有1:1关系的节点。 DataStructure的实例以及与DataModel实例的关系将不会被保存,尽管它在程序中不为null。

如何保存整个DataModel? Spring可能会干扰Neo4j映射。我不确定,为什么自动装配的属性可能会在克隆过程中丢失,或者Neo4j用于获取数据。也许有人可以对此有所了解?

0 个答案:

没有答案