Проблема маппинга ManyToMany [закрыт]

142
27 марта 2019, 10:30

Есть две ентити Book и Author и есть третья ентити для их связи (id, id-author, id-book).

как правильно замаппить связи между ними?

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

    @Column(name = "book_id")
    private Integer book_id;
    @Column(name = "author_id")
    private Integer author_id;
// get set
}
Answer 1

Что-то типа такого у вас будет в авторской энтити

private Set<Book> books;
 @ManyToMany
    @JoinTable(name = "book_author", joinColumns = {
    @JoinColumn(name = "author_id")},
    inverseJoinColumns = {
    @JoinColumn(name = "book_id")
    })
    public Set<Book> getBooks() {
        return books;
    }

Что то вроде такого в книжной:

 private Set<Author> authors;
    @ManyToMany(mappedBy = "books")
    public Set<Author> getAuthors() {
                    return authors;
                }

Дополнительная энтити как у вас, не нужна, хотя таблица с соответствующими полями, конечно же, должна быть создана

Answer 2

Замапить - значит ставить аннотации на поля которые вы хотите мапить. Связная таблица нужна для @ManyToMany отношений, и вы её не можете использовать как энтити, поскольку она создаётся автоматически и содержит только внешние ключи.

Если же вы все-таки решили использовать связную таблицу как энтити, то вам надо отказаться от @ManyToMany аннотации и использовать @ManyToOne.

@ManyToOne
@JoinColumn(name = "book_id")
private Book book;
@ManyToOne
@JoinColumn(name = "author_id")
private Author author;
READ ALSO
Чем вызвана данная ошибка(TCP socket)?

Чем вызвана данная ошибка(TCP socket)?

Никак не могу понять в чем делоПересмотрел кучу всего на эту тему, но мало чего помогло

146
Glide время истечение годности кеша

Glide время истечение годности кеша

В своем андроид приложении для загрузки изображений(gif) использую glide

227
Как заменить иконкой FontAwesome input?

Как заменить иконкой FontAwesome input?

Всем привет! Код HTML:

176
Удаление тега при загрузки страницы на малых экранах

Удаление тега при загрузки страницы на малых экранах

нужна помощь, нужно удалить полностью тег при загрузки станицы, пример такой, необходимо удалить <section class="page4"> из станицы,

172