java如何在spring数据jpa中映射友元请求实体
我正在创建一个小型社交媒体,但我不知道映射好友请求实体的最佳方法。如果应该是多对一或一对多,因为friend请求类引用用户实体类两次。一个用于请求的接收者,一个用于请求的发送者。请你帮我看看我的代码,看看我做的事情是否正确
@Component
@Entity
@Table(name = "Users")
public class User extends DefaultEntity {
@Column(name = "FirstName")
@NotNull(message = "Enter a FirstName")
private String firstName;
@Column(name = "LastName")
@NotBlank(message = "Enter a LastName")
private String lastName;
@Column(unique = true,name = "UserName")
@NotBlank(message = "Enter a UserName")
private String userName;
@Column(unique = true, name = "Email")
@NotBlank(message = "Please enter an Email address")
@Email(message = "Enter a valid Email")
private String email;
@Column(name = "Password")
@NotBlank(message = "Enter a Password")
private String password;
@Enumerated(EnumType.STRING)
@Column(name = "Gender")
private Gender gender;
@Column(name = "Address")
@NotBlank(message = "Please enter your Home Address")
private String address;
@Column(name = "Country")
@NotBlank(message = "Please enter your Country")
private String country;
@Column(name = "Picture")
private String picture;
@Column(unique = true, name = "PhoneNumber") //make this accept only numbers
private String phoneNumber;
@Column(name = "Bio")
private String bio;
@Column(name = "OnlineStatus")
private OnlineStatus onlineStatus;
@Enumerated(EnumType.STRING)
@Column(name = "UserType")
private UserType userType;
@Column(name = "Money")
private long money;
//@MapsId()
@OneToOne(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
@JoinColumn(name = "playerstats")
private PlayerStats playerStats;
}
下面是好友请求实体:
@Component
@Entity
@Table(name = "FriendRequest")
public class FriendRequest extends DefaultEntity {
private User sender;
private FriendRequestStatus friendRequestStatus;
private User recipient;
public User getSender() {
return sender;
}
public void setSender(User sender) {
this.sender = sender;
}
public User getRecipient() {
return recipient;
}
public void setRecipient(User recipient) {
this.recipient = recipient;
}
public FriendRequestStatus getFriendRequestStatus() {
return friendRequestStatus;
}
public void setFriendRequestStatus(FriendRequestStatus friendRequestStatus) {
this.friendRequestStatus = friendRequestStatus;
}
}
请问我的好友请求实体,特别是其中的用户对象是否正确映射
# 1 楼答案
让我们考虑请求和发送者之间的联系。一个请求只有一个发送者。否则,sender字段将是用户的集合,并将命名为
senders
。所以它不可能是一个ToMany关联:它指的是一个用户现在,它是一个单子还是多个单子?同一用户可以发送多个请求。我想是的。每个人只能有一个朋友的生活会有点悲伤,不是吗?因此,多个请求可以指向同一个发送者,或者,如果您愿意,一个用户可以发送多个请求。所以这是一个多音
我让你为另一个协会做推理
请注意,用组件注释实体完全没有意义。那些不是春豆。Spring既不实例化它们,也不注入它们