我有一个名为 User 的表:
public class User
{
private Long userId;
private String username;
//Other fields;
}
现在假设用户可以有其他用户 friend 。那么我如何在 JPA 中创建这种关系。
与此同时,我在数据库的用户表中执行此操作:
USER_ID
USERNAME
USER_FRIENDS
在用户实体中是这样的:
public class User
{
private Long userId;
private String username;
//Other fields;
@OneToMany(cascade = CascadeType.ALL)
@Column(name = "USER_FRIENDS")
private List<UserEntity> friends;
}
这行不通。那么,我如何在 JPA 中实现这一点?提前致谢!
最佳答案
在@Florian Schaetz 的研究和帮助下,我找到了自引用实体的解决方案。 需要的是用户可以有其他用户 friend ,并且该用户可以成为其他用户的 friend 。所以,我所做的是这样的:
public class User
{
private Long userId;
private String username;
//Other fields;
@JoinTable(name = "USER_FRIENDS", joinColumns = {
@JoinColumn(name = "ADDING_USER", referencedColumnName = "USER_ID", nullable = false)}, inverseJoinColumns = {
@JoinColumn(name = "ADDED_USER", referencedColumnName = "USER_ID", nullable = false)})
@ManyToMany
private Collection<User> friends;
@ManyToMany(mappedBy = "friends")
private Collection<User> addUser;
}
希望这对其他人有帮助!再次感谢 friend 们!
关于java - JPA 自引用实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31884500/