JPA自我引用实体

时间:2015-08-07 18:34:24

标签: java hibernate jpa

我有一个名为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中实现这一目标?提前谢谢!

1 个答案:

答案 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;
}

希望这会有助于其他人!再次感谢朋友们!