为了账号安全,请及时绑定邮箱和手机立即绑定

如何通过外键将 mySQL 数据库中的一个表连接到多个其他表?

如何通过外键将 mySQL 数据库中的一个表连接到多个其他表?

隔江千里 2022-05-25 16:20:43
我有一个用户表、角色表和一个通知表。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 注释连接到通知表?它不接受重复。
查看完整描述

1 回答

?
子衿沉夜

TA贡献1828条经验 获得超3个赞

您不得使用 @JoinTable 注释。@JoinTable 注解仅用于@ManyToMany 关系。


您需要创建一个包含三个字段的新实体,并且每个字段必须具有 @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       

}


查看完整回答
反对 回复 2022-05-25
  • 1 回答
  • 0 关注
  • 175 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号