对于以下实体,
public class Book {
private String bookName;
@OneToMany(mappedBy = "name", cascade = CascadeType.ALL)
private List<Author> authors;
}
public class Author {
private String name;
private String location;
@ManyToOne
@JoinColumn(name = "bookName", referencedColumnName = "bookName")
private Book book;
}
例如,如果我想检索作者位于美国的图书清单。
@Query("SELECT a from Book a, Author b where b.location = "USA")
但是,以下查询仅检索作者位于美国中的书籍,而不仅检索位置 USA <的作者 / strong>但作者也包含其他位置。
我如何只检索位于美国中的作者以及过滤掉非美国的作者 STRONG>。
答案 0 :(得分:1)
更改添加联接的查询
@Query("SELECT a from Book a join a.authors b where b.location = "USA")
答案 1 :(得分:1)
首先,您的映射是 NOT 正确。
您必须在mappedBy
课程中修复Book
媒体资源。
图书课程:
public class Book {
private String bookName;
@OneToMany(mappedBy = "book", cascade = CascadeType.ALL)
private List<Author> authors;
}
现在,您可以使用JPQL查询数据库,以获取Books
及相关的Authors
。
在BookRepository
:
@Query("SELECT b from Book b join fetch b.authors a where a.location = "USA")
PS :我没有测试过该查询但它应该可以运行。