Двунаправленная картография Spring Boot JPA без внешнего ключа - PullRequest
0 голосов
/ 19 февраля 2019

Возможно ли Greate DDL с использованием JPA с двунаправленным отображением и без внешнего ключа?Если можно, то это лучшая практика?

@Entity
class Book{
    int id;
    String title;
    @OneToMany(mappedBy="book")
    Set<BookDetail> book_detail;
}

@Entity
class BookDetail{
    int id;
    String name;
    String description;
    @ManyToOne
    Book book;
}

Ответы [ 2 ]

0 голосов
/ 20 февраля 2019

Да.Это возможно с помощью таблицы соединений.Конечно, он будет иметь внешние ключи.

@Entity
class Book{

    @OneToMany
    List<BookDetail> bookDetail;

}

@Entity
class BookDetail{

    @ManyToOne(fetch = FetchType.LAZY)
    Book book;

}

что такое @JoinColumn и как он используется в Hibernate

0 голосов
/ 20 февраля 2019

Вы не можете сделать это без хотя бы одного чужого ключа, поскольку БД должна установить некоторое соединение между двумя сущностями - BookDetail и Book.Для этих сущностей можно создать две таблицы без реального внешнего ключа, используя простой целочисленный атрибут в BookDetail, который будет хранить значение идентификатора Книги. Но не делай этого! С внешним ключом ваша СУБД генерирует ограничения, так что она знает о взаимосвязи и предотвращает некоторые небезопасные удаления и вставки, поэтому каждая строка BookDetail ссылается на существующую книгу.Без реального внешнего ключа вы могли бы случайно удалить Книгу, и у вас BookItem's

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...