Twitter喜欢JPA中的关系

时间:2012-08-07 12:50:36

标签: database database-design jpa

我遇到了JPA的问题。我正在尝试实现一个允许用户关注其他用户并被跟踪的数据库。 我想我需要(总结)这样的事情:

USER_TABLE: id | userName
RELATIONSHIP_TABLE: id | follower | followed | acceptation

我有两个实体(也总结):

@Entity
public class User implements Serializable {

@Id
private Long id;

private String userName;

@OneToMany
private Collection<Relationship> followings;

}


@Entity
public class Relationship implements Serializable {

@Id
private Long id;

private User follower;

private User followed;

private boolean accepted;

}

我的问题是我不确定是否可以这样做,因为我获得了更多我需要的表格。

任何人都可以帮助我吗? 谢谢,抱歉我的英语。

1 个答案:

答案 0 :(得分:3)

您获得了更多表,因为您没有使关联成为双向。如果你不说,JPA无法知道Relationship.followerUser.followings的另一面:

@Entity
public class User implements Serializable {

    @OneToMany(mappedBy = "follower")
    private Collection<Relationship> followings;

    // ...
}


@Entity
public class Relationship implements Serializable {

    @ManyToOne
    @JoinColumn(name = "follower")
    private User follower;

    @ManyToOne
    @JoinColumn(name = "followed")
    private User followed;

    // ...
}

The documentation当然解释了它是如何运作的。