Как подключить одну таблицу в базе данных mySQL к нескольким другим таблицам через внешние ключи? - PullRequest
0 голосов
/ 29 января 2019

У меня есть таблица пользователей, таблица ролей и таблица уведомлений.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 Ответ

0 голосов
/ 29 января 2019

Вы не должны использовать аннотацию @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       
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...