如何使用 Hibernate 获取不完整的集合?
How to get not full collection using Hibernate?
我学习Hibernate,现在有这样的结构:
Class 人:
@Entity
public class Person {
...
@OneToMany(...)
private List<Task> tasks;
...
}
Class 任务:
@Entity
public class Task {
...
@Column(...)
private boolean isCompleted;
@ManyToOne(...)
private Person person;
...
}
我的问题是: 我怎样才能得到只包含已完成任务的 Person 对象?
我使用 Hibernate Session 尝试了这个 HQL 查询:
SELECT person FROM Person person JOIN Task task WIH task.completed = true
但当然我只得到已完成任务的人,但每个列表也包含其他人。我听说过一些关于 Criteria 能力的事情,但它已被弃用。那么如何通过 HQL 或一些新的 API 来实现呢?我使用 Hibernate 5。感谢您的帮助。
试试这个
@OneToMany(...)
@Where(clause = "is_completed = true")
请注意,您必须在 @Where 子句值中写入 sql,因为这将在本机 sql 生成期间应用。
来自文档-
- Where clause to add to the element Entity or target entity of a collection
- The clause is written in SQL
我学习Hibernate,现在有这样的结构:
Class 人:
@Entity
public class Person {
...
@OneToMany(...)
private List<Task> tasks;
...
}
Class 任务:
@Entity
public class Task {
...
@Column(...)
private boolean isCompleted;
@ManyToOne(...)
private Person person;
...
}
我的问题是: 我怎样才能得到只包含已完成任务的 Person 对象? 我使用 Hibernate Session 尝试了这个 HQL 查询:
SELECT person FROM Person person JOIN Task task WIH task.completed = true
但当然我只得到已完成任务的人,但每个列表也包含其他人。我听说过一些关于 Criteria 能力的事情,但它已被弃用。那么如何通过 HQL 或一些新的 API 来实现呢?我使用 Hibernate 5。感谢您的帮助。
试试这个
@OneToMany(...)
@Where(clause = "is_completed = true")
请注意,您必须在 @Where 子句值中写入 sql,因为这将在本机 sql 生成期间应用。
来自文档-
- Where clause to add to the element Entity or target entity of a collection
- The clause is written in SQL