我遇到了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;
}
我的问题是我不确定是否可以这样做,因为我获得了更多我需要的表格。
任何人都可以帮助我吗? 谢谢,抱歉我的英语。
答案 0 :(得分: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;
// ...
}
The documentation当然解释了它是如何运作的。