用jpa删除联接表中的行



我遇到问题,找不到解决方案。我有一个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

但是该表存在于数据库中,并且包含了我输入的所有数据。

联接表不是实体,因此不能在JPQL查询中使用它(DELETE FROM join_tables.book_author错误(

在你们的关系中,Auther是拥有者。这样你就可以从图书收藏中删除这本书,然后保存作者

author.books.remove(book)

最新更新