gpt4 book ai didi

postgresql - 使用 jpa 删除连接表中的行

转载 作者:行者123 更新时间:2023-11-29 14:14:37 25 4
gpt4 key购买 nike

我遇到了问题,但找不到解决方案。我有一个 Book 表和一个 Author 表,具有多对多关系。 Book 表位于书籍模式中,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)

关于postgresql - 使用 jpa 删除连接表中的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53306546/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com