3

我遇到了 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;

}

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

有谁能够帮我?谢谢和对不起我的英语。

4

1 回答 1

3

您获得了更多表,因为您没有使关联成为双向的。如果您不告诉,JPA 无法知道那Relationship.follower是另一面:User.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;

    // ...
}

当然,文档解释了它是如何工作的。

于 2012-08-07T12:56:16.153 回答