【发布时间】:2011-04-05 20:55:33
【问题描述】:
我遇到了一个关于 JPA-2.0 查询与关系的问题。怎么可能选择任何Dataset 和至少一个Event 和type = B?
@Entity
class Dataset {
@OneToMany(fetch = FetchType.LAZY, mappedBy = "dataset")
public List<Event> events;
}
@Entity
class Event {
@ManyToOne
@JoinColumn
public Dataset dataset;
public Type type;
}
enum Type {
A, B, C
}
我的出发点是
CriteriaBuilder _builder = em.getCriteriaBuilder();
CriteriaQuery<Dataset> _criteria = _builder.createQuery(Dataset.class);
// select from
Root<Dataset> _root = _criteria.from(Dataset.class);
_criteria.select(_root);
// apply some filter as where-clause (visitor)
getFilter().apply(
_root, _criteria, _builder, em.getMetamodel()
);
// how to add a clause as defined before?
...
对此有任何想法。我尝试创建子查询和连接,但不知何故我做错了,结果总是得到所有数据集。
【问题讨论】:
标签: java hibernate orm jpa-2.0 criteria-api