2017-08-27 36 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
    相关问题