gpt4 book ai didi

java - JPA 中的多对多查询

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

我有两个表/实体。一切正常(省略了 getter 和 setter)。

@Entity
public class Book() {
@Id;
int id;
@ManyToMany
List<Category> categories;
}

@Entity
public class Category {
@Id
int id;
@ManyToMany
List<Book> books;
}

JPA/Hibernate 使用名为 book_category 的连接表创建预期的数据库结构,其中包含字段 book_id 和 category_id。

类别是预先创建的,因此并非所有类别都有书籍。我想查询其中包含书籍的不同类别。

下面的 SQL 查询可以做到这一点:

SELECT DISTINCT <things> FROM book_category JOIN category ON category.id = book_category.category_id

但是我怎样才能从存储库中获取类别列表呢?

最佳答案

如果您想要所有已分配书籍的类别,那么我认为您只需要对 Category 实体进行查询,以检查其图书 Collection 的大小:

select c from Category where size(c.books) > 0

即使可以直接查询联结表,例如通过 native 查询,我认为这不会被视为良好的 JPA 实践。相反,您已经拥有的两个多对多实体应该允许您执行所需的查询。

关于java - JPA 中的多对多查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47572376/

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