Spring Data Neo4j没有将类字段映射到节点属性

时间:2016-03-25 18:08:19

标签: java neo4j spring-data-neo4j-4 neo4j-ogm

我有一个存储库

@Repository
public interface PointOfInterestRepository extends GraphRepository<Poi> {
    // currently empty
}

没有定义自定义方法。所以我使用预定义的save(T... entities)之类的。

我的Poi课程如下

@NodeEntity(label = "PointOfInterest")
public class Poi {

    @JsonIgnore
    @GraphId
    Long neo4jId;

    @JsonManagedReference("node-poi")
    @JsonProperty("node")
    @Relationship(type = "BELONGS_TO", direction = Relationship.UNDIRECTED)
    private Node node;

    @JsonProperty("id")
    @Property(name = "poiID")
    private final String id;

    @JsonProperty("uris")
    @Property(name = "uris")
    private final Set<URI> correspondingURIs = new HashSet<>();

   /* Some more stuff I skip here*/
}

使用字段的getter。

目前我可以将这些Pois保存到neo4j并将其检索回来,但是当我尝试通过cypher 在数据库中使用这些节点时,似乎字段未映射到neo4j属性

我认为spring-data-neo4j会将我的类字段转换为neo4j图形属性。我错了吗?

注意: save电话似乎运作良好。之后我可以在数据库中看到节点,然后调用findAll()将使用所有正确的值正确地返回所有已保存的节点(Pois)。但不知何故,在数据库中,我看不到任何属性/字段。

1 个答案:

答案 0 :(得分:3)

问题是最后的字段。当从图中加载时,SDN将无法将值写回实体,因为这些字段是最终的(并且SDN将仅使用默认的无参数构造函数),因此,不支持最终字段。 删除决赛应该解决这个问题。