我有以下neo4j图形模型的关系实体,使用Spring数据neo4j6.1.1来表示关系,如Person-BookedFor->电影,其中我可以为节点存储库(个人,电影(使用UUID字符串,但不能为以下关系实体BookedFor使用。
注:由于neo4j文档描述了该neo4j文档参考
public interface BookedForRepository extends Neo4jRepository<BookedFor, String> {}
@RelationshipProperties
public class BookedFor {
@Id
@GeneratedValue(UUIDStringGenerator.class)
public String rid;
@Property
private Date bookedDate;
}
它抛出如下错误:
关系
BookedFor
属性的目标类*.entities.BookedFor
缺少生成的内部ID(@Id @GeneratedValue Long id
(的属性,该属性是安全更新属性所必需的
注意:如果我使用以下内容,它将创建与neo4j 的内部id的关系
public interface BookedForRepository extends Neo4jRepository<BookedFor, Long> {}
@RelationshipProperties
public class BookedFor {
@Id
@GeneratedValue
public Long id;
@Property
private Date bookedDate;
}
但由于我们依赖neo4j关系实体的内部id,这将给数据迁移/数据突变带来不确定性。如果我错了,请纠正我。
春季数据neo4j文件参考
有人能帮忙以更好的方式进行这项工作吗?
此外,如果需要更多澄清/细节,请发表评论。
您不能通过存储库直接访问关系属性。这些类只是对关系上的属性的封装,并不意味着表示"类";物理";关系或更多的关系实体。存储库仅用于@Node
注释类。
如果要访问和修改关系的属性,则必须获取关系定义实体。关系本身总是由其起始节点和结束节点表示。
最近引入的必需@Id
仅供内部使用。如果您有特殊需要在关系上持久化类似id的属性,那么它将只是@RelationshipProperties
注释类中的另一个属性。