如何解决我们可以使用 Spring 将数据保存到 Neo4j 中的关系吗?
在使用 Cypher 命令时,我可以轻松地将数据保存到关系中,但是在 Spring D 中,我不知道如何从两个节点之间的关系中保存和获取数据。 这是我的例子:
类用户
@NodeEntity
public class User {
private String username;
private String saltedPassword;
private String lastIp;
private boolean enabled;
private Profile profile;
@Relationship(type = "FOLLOWS")
private Set<User> followings;
@Relationship(type = "FOLLOWED_BY")
private Set<User> followers;
@Relationship(type = "HAS_POST")
private Set<Post> posts;
@Relationship(type = "HAS_COMMENT")
private Set<Comment> comments;
@Relationship(type = "HAS_VERITFICATION_TOKEN")
private Set<VerificationToken> verificationTokens;
}
类验证令牌
@NodeEntity
public class VerificationToken {
@Id
@GeneratedValue(UUIDStringGenerator.class)
private String id;
private String token;
private long expiryDate;
@Relationship(type = "BELONG_USER")
private User user;
}
两个节点之间的这种关系是 HAS_VERIFICATION_TOKEN。就像现在一样。我只能在 User 中保存一个 Set,但是如果我需要向这个关系添加数据,我不能。
有人可以帮我吗?提前致谢。
解决方法
由于您使用的是 Spring Data Neo4j 5(顺便说一下,它不是最新的主要版本),您可以引入一个 @RelationshipEntity
类来模拟您的 { {1}} 和 User
实体:
VerificationToken
然后您的 @RelationshipEntity("HAS_VERIFICATION_TOKEN")
public class VerificationTokenOwnership {
@Id
@GeneratedValue
private Long id;
// add your extra properties here
@StartNode
private User user;
@EndNode
private VerificationToken token;
// getters and setters
}
字段可以变为:
User
注意:同时拥有 @Relationship(type = "HAS_VERIFICATION_TOKEN")
private Set<VerificationTokenOwnership> verificationTokens;
和 HAS_VERIFICATION_TOKEN
关系似乎有点奇怪,理想情况下您应该只拥有其中之一。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。