Neo4j和不可变对象

时间:2018-01-28 13:41:11

标签: java neo4j immutability

如何使用Neo4j存储/加载不可变对象? 我正在使用Spring Boot 1.5.9和spring-data-neo4j 4.2.9。

假设我有一个我想要存储在Neo4j中的不可变对象:

public class Element {

    @GraphId
    private final Long id;

    private final String name;
    private final Int atomicWeight;

    // Getters, AllArgsConstructor, NoArgsConstructor ommitted
}

当加载这样的对象时,Neo4j会抛出这个:

org.neo4j.ogm.exception.MappingException: No identity field found for class: com.example.Element

我假设Neo4j首先使用默认构造函数创建一个对象,然后使用setter(对于可变对象)和反射(对于不可变对象)填充字段。

如果字段不是final,一切正常。

我知道有些库(例如Jackson)对最终字段没有任何问题,并以相同的方式工作(创建空实例并稍后使用setter / reflection填充)。那么,有没有办法让Neo4j优雅地处理不可变对象?

0 个答案:

没有答案