2017-08-27 57 views
1

我學習Hibernate和現在有這樣的結構:如何使用Hibernate獲取不完整的集合?

類人:

@Entity 
public class Person { 

    ... 

    @OneToMany(...) 
    private List<Task> tasks; 

    ... 

} 

類任務:

@Entity 
public class Task { 

    ... 

    @Column(...) 
    private boolean isCompleted; 

    @ManyToOne(...) 
    private Person person; 

    ... 

} 

我的問題是:我怎樣才能得到人只有完成任務的對象? 我嘗試使用Hibernate的Session這個HQL查詢:

SELECT person FROM Person person JOIN Task task WIH task.completed = true

但當然,我得到的只是已經完成的任務,但每個列表cotains他們其餘的人也人。我聽說條件能力,但它已被棄用。那麼我怎樣才能通過HQL或者一些新的API來實現呢?我使用Hibernate 5.感謝您的幫助。

+0

儘量選擇任務元素實體或目標實體的集合

  • 的那與他們的人完成,而不是完成任務的人完成。使用協會的許多方面會更好。 –

  • 回答

    0

    試試這個

    @OneToMany(...) @Where(clause = "is_completed = true")

    請注意,您必須編寫SQL在@Where條款值,因爲這將本地SQL生成過程中應用。

    從文檔 -

    • Where子句添加到該條款是寫在SQL
    相關問題