如何使用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优雅地处理不可变对象?