spring data neo4j 6.1.1 Repository Relationship primary_id 不允许使用 UUID 字符串,而节点 Primary_id UUID 字符串正在工作

spring data neo4j 6.1.1 Repository Relationship primary_id not allowing to use UUID String where as for Node Primary_id UUID String is working

我使用 Spring 数据 neo4j 6.1.1 为 neo4j 图形模型创建了以下关系实体来表示关系,例如 Person-BookedFor->Movie 我可以将 UUID 字符串用于节点存储库(Person、Movie)但不能用于以下关系实体 BookedFor。

注意:由于 neo4j 文档对此进行了描述 neo4j doc ref

public interface BookedForRepository extends Neo4jRepository<BookedFor, String> {}

@RelationshipProperties
public class BookedFor {

    @Id
    @GeneratedValue(UUIDStringGenerator.class)
    public String rid;

    @Property
    private Date bookedDate;

}

抛出如下错误:

The target class *.entities.BookedFor for the properties of the relationship BookedFor is missing a property for the generated, internal ID (@Id @GeneratedValue Long id) which is needed for safely updating properties

注意:如果我像下面这样使用,它会与 neo4j 的内部 ID 建立关系

public interface BookedForRepository extends Neo4jRepository<BookedFor, Long> {}

@RelationshipProperties
public class BookedFor {

    @Id
    @GeneratedValue
    public Long id;

    @Property
    private Date bookedDate;

}

但这会给数据迁移/数据突变带来不确定性,因为我们依赖于 neo4j 关系实体的内部 ID。如有不妥请指正

spring data neo4j doc ref

任何人都可以帮助以更好的方式进行此操作吗?

此外,如果需要更多说明/详细信息,请发表评论。

您不能直接通过存储库访问关系属性。 这些 classes 只是对关系属性的封装,并不意味着表示“物理”关系或关系实体。 存储库仅用于 @Node 注释 classes。

如果要访问和修改关系的属性,则必须获取关系定义实体。 关系本身始终由其开始和结束节点表示。

最近引入的要求 @Id 仅供内部使用。 如果你有特殊需要在关系中保留一个类似 id 的 属性,它只是 @RelationshipProperties 中的另一个 属性 注释 class.