簡體   English   中英

HQL查詢以一對多關系獲取一些項目

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM