[英]How to join table with itself using another table in hibernate with annotations?
我有两个表 - 用户和朋友。 任何用户都可以有任意数量的朋友(另一个用户)。 这些关系存储在“朋友”表中,因此这只是服务表。
我应该如何在我的实体类中对此进行编码? 我应该使用@ManyToMany 吗? 我的假设是下一个:
用户.java:
@Entity
@Table(name = "users")
@NoArgsConstructor
public class User implements Serializable {
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Id
@Column(name = "id")
private Long id;
@Basic
@Column(name = "name", nullable = false, length = 45)
private String name;
@ManyToMany(cascade = { CascadeType.ALL })
@JoinTable(
name = "friends",
joinColumns = { @JoinColumn(name = "id") },
inverseJoinColumns = { @JoinColumn(name = "sender") }
)
private Set<User> friendsInviters = new HashSet<>();
@ManyToMany(mappedBy = "users")
private Set<User> friendsReceiver = new HashSet<>();
}
朋友.java:
@Entity
@Table(name = "friends")
@NoArgsConstructor
public class Friend implements Serializable {
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Id
@Column(name = "id")
private Long id;
@Basic
@Column(name = "sender")
private Long sender;
@Basic
@Column(name = "receiver")
private Long receiver;
}
PS - 我刚开始学习 Hibernate :)
@Entity
@Table(name = "users")
public class User implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long userId;
@Column(name = "name", nullable = false, length = 45)
private String name;
@ManyToMany(cascade = { CascadeType.ALL })
@JoinTable(name="users_friends",
joinColumns = { @JoinColumn(name = "user_id") },
inverseJoinColumns = { @JoinColumn(name = "friend_id") }
)
private Set<User> friendsInviters = new HashSet<>();
@ManyToMany(mappedBy = "friendsInviters")
private Set<User> friendsReceiver = new HashSet<>();
public Long getUserId() {
return userId;
}
public void setUserId(Long userId) {
this.userId = userId;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Set<User> getFriendsInviters() {
return friendsInviters;
}
public void setFriendsInviters(Set<User> friendsInviters) {
this.friendsInviters = friendsInviters;
}
public Set<User> getFriendsReceiver() {
return friendsReceiver;
}
public void setFriendsReceiver(Set<User> friendsReceiver) {
this.friendsReceiver = friendsReceiver;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.