簡體   English   中英

如何通過外鍵將mySQL數據庫中的一個表連接到多個表?

[英]How do i connect one table in a mySQL database to more than one other table via foreign keys?

我有一個用戶表,角色表和通知表。 user_id是用於將用戶鏈接到通知的外鍵。

在我的用戶類中,我已經通過其外鍵role_id訪問另一個表,角色。 如圖所示

@Data
@Entity
@Table(name = "users")
public class User {`enter code here`

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column
    private Long id;

    @Column
    @NotBlank
    @Size(max = 40)
    private String username;

    // Valid From
    @Column
    private Date validFrom;


    // Valid To
    @Column
    private Date validTo;

    @Column
    @NotBlank
    @Size(max = 100)
    private String password;

    @OneToOne(fetch = FetchType.LAZY)
    @JoinTable(name = "user_roles",
            joinColumns = @JoinColumn(name = "user_id"),
            inverseJoinColumns = @JoinColumn(name = "role_id"))






    private Role role;

    public User() {

    }

    public User(String username, String password) {
        this.username = username;
        this.password = password;
    }


}

如何使用@JoinTable批注連接到通知表? 它不接受重復。

您一定不能使用@JoinTable批注。 @JoinTable批注僅用於@ManyToMany關系。

您需要使用三個字段創建一個新的Entity,每個字段必須具有@ManyToOne和@JoinColumn批注。 例如:

@Entity
   @Table(name = "table_name")
   class NewEntity {

    //Id and anothers fields

    @ManyToOne
    @JoinColumn(name = "user_id")
    private Users users;

    @ManyToOne
    @JoinColumn(name = "role_id")
    private Roles roles;

    @ManyToOne
    @JoinColumn(name = "notification_id")
    private Notifications notifications ;

    //getters and setters       
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM