solovladys
@solovladys
Люблю программировать

Почему при автогенерации таблиц не устанавливаются связи?

Почему после автогенерации таблиц, средствами хибернейт
spring.jpa.hibernate.ddl-auto=create
в базе данных между таблицами нет связей? и как их можно установить?

Вот так выглядят таблицы базы данных:
5cc8acdca8a34207277122.png

По сути от юзера в коде наследуются два класса: студент, преподаватель.
у студента к комнате связь многие-ко-многим, у преподавателя: один-ко-многим.

Листинг моделей/сущностей:
@Entity
@Table(name = "rooms")
public class Room {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;
    @Column(name = "name")
    String name;
    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "teacher_id")
    private Teacher teacher;
    @ManyToMany(mappedBy = "createdRooms")
    private List<Student> students;
}

@Entity
@Table(name = "users")
@Inheritance
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;

    @Column(name = "login")
    private String login;

    @Column(name = "password")
    private String password;
}

@Entity
@DiscriminatorValue("TEACHER")
public class Teacher extends User {
    @OneToMany(mappedBy = "teacher",
            cascade = CascadeType.ALL,
            orphanRemoval = true)
    private List<Room> createdRooms;
}

@Entity
@DiscriminatorValue("STUDENT")
public class Student extends User {
    @ManyToMany(cascade = {
            CascadeType.PERSIST,
            CascadeType.MERGE})
    @JoinTable(name = "students_rooms",
            joinColumns = @JoinColumn(name = "student_id"),
            inverseJoinColumns = @JoinColumn(name = "room_id"))
    private List<Room> createdRooms;
}


В чем может быть причина? И как ее исправить?
  • Вопрос задан
  • 58 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы