我有一个名为User的表,如下所示:
public class User
{
private Long userId;
private String username;
//Other fields;
}
现在让我们说用户可以有其他用户朋友。那么我如何在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中实现这一目标?提前谢谢!
答案 0 :(得分:2)
在@Florian Schaetz的研究和帮助之后,我找到了自引用实体的解决方案。 需要用户可以拥有其他用户朋友,用户可以成为其他用户的朋友。所以,我做的是这样的:
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;
}
希望这会有助于其他人!再次感谢朋友们!