[英]HQL query for getting some items in one to many relation
我搜索了互联网的所有内容,但没有找到答案。
我在两个类之间有一个oneToMany关系,我想获得列表的一部分。
@Entity
@Table(name = "author")
class Author {
@Id
private Long id;
@OneToMany(cascade = CascadeType.ALL, orphanRemoval = true)
@JoinColumn(name = "AUTHOR_ID", referencedColumnName = "id")
private List<Book> books = new ArrayList<>();
}
@Entity
@Table(name="book")
class Book {
@Column
private Integer year;
@Column
private Integer position;
}
我想让所有具有特定年份且低于特定作者的特定职位的图书
@Query(From Book b where b.year=:year and b.position<:position and b.authorId=:id)
List<Book> getAllBooks(Integer year, Integer position, Long id)
我也尝试过
@Query(From Book b where b.year=:year and b.position<:position and b.id in (select a.books.id from author a where a.id:=id)
感谢你们对我的帮助
如果您尝试使用JPQL设置查询,对我来说看起来应该是...
@Query("SELECT b FROM Book b WHERE b.year = :year and b.position < :position and b.authorId = :id")
抱歉-我之前通过复制和修改第一个示例来回答。 我错过了参加。
这可能有效...
@Query("SELECT a.books b FROM Author a WHERE b.year = :year AND b.position < :position AND a.authorId = :id")
您也可以尝试这个...
@Query("SELECT b FROM Book b WHERE b.year = :year AND b.position < :position AND b IN (SELECT a.books FROM Author a WHERE a.id = :id")
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.