удалить строку в таблице соединений с помощью jpa - PullRequest
0 голосов
/ 14 ноября 2018

У меня проблема, и я не могу найти решение.У меня есть таблица Book и таблица Author, со многими отношениями.Таблица Book находится в схеме book, а таблица Author - в схеме person.Итак, у меня есть это:

book.book

people.author

Я сделал следующий код:

*** Entity Book ***
@ManyToMany(mappedBy = "book")
private List<Author> author = new ArrayList<>();

и

*** Entity Author ***
@ManyToMany
@JoinTable(schema = "join_tables", name = "book_author", joinColumns = @JoinColumn(name = "fk_author"), inverseJoinColumns = @JoinColumn(name = "fk_book"))
private List<Book> books = new ArrayList<>();

Я могу зарегистрировать книгу с несколькими авторами, один автор с несколькими книгами.Я могу вставить автора в уже зарегистрированную книгу.Вставьте книгу уже зарегистрированному автору.Но я не могу удалить отношения книги с автором.Что я пытался сделать:

@Repository
public interface AuthorRepository extends JpaRepository<Author, Long> {

    @Query("DELETE FROM join_tables.book_author jtba  WHERE  jtba.fk_author = :fka AND jtba.fk_book = :fkb")
    void deleteRelationshipBookAuthor(@Param("fka") Long fka, @Param("fkb") Long fkb);
}


And it always shows the same error:
org.hibernate.hql.internal.ast.QuerySyntaxException: join_tables.book_author is not mapped

Но таблица существует в базе данных и содержит все введенные мной данные.

1 Ответ

0 голосов
/ 14 ноября 2018

Таблица соединения не является сущностью, поэтому вы не можете использовать ее в запросе JPQL (DELETE FROM join_tables.book_author неверен)

в ваших отношениях, Auther является владельцем стороны.так что вы можете удалить книгу из коллекции книг и затем сохранить автора

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