Есть две ентити 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
}
Что-то типа такого у вас будет в авторской энтити
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;
}
Дополнительная энтити как у вас, не нужна, хотя таблица с соответствующими полями, конечно же, должна быть создана
Замапить - значит ставить аннотации на поля которые вы хотите мапить. Связная таблица нужна для @ManyToMany
отношений, и вы её не можете использовать как энтити, поскольку она создаётся автоматически и содержит только внешние ключи.
Если же вы все-таки решили использовать связную таблицу как энтити, то вам надо отказаться от @ManyToMany
аннотации и использовать @ManyToOne
.
@ManyToOne
@JoinColumn(name = "book_id")
private Book book;
@ManyToOne
@JoinColumn(name = "author_id")
private Author author;
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Никак не могу понять в чем делоПересмотрел кучу всего на эту тему, но мало чего помогло
В своем андроид приложении для загрузки изображений(gif) использую glide
нужна помощь, нужно удалить полностью тег при загрузки станицы, пример такой, необходимо удалить <section class="page4"> из станицы,