有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案

  1. # 1 楼答案

    让我们考虑请求和发送者之间的联系。一个请求只有一个发送者。否则,sender字段将是用户的集合,并将命名为senders。所以它不可能是一个ToMany关联:它指的是一个用户

    现在,它是一个单子还是多个单子?同一用户可以发送多个请求。我想是的。每个人只能有一个朋友的生活会有点悲伤,不是吗?因此,多个请求可以指向同一个发送者,或者,如果您愿意,一个用户可以发送多个请求。所以这是一个多音

    我让你为另一个协会做推理

    请注意,用组件注释实体完全没有意义。那些不是春豆。Spring既不实例化它们,也不注入它们