首页 > 解决方案 > OneToMany 只返回特定的行

问题描述

我有带属性的课程

@Entity
public class Energy() {
   @Id
   private long id;

   private Date date;

   @OneToMany(fetch = FetchType.LAZY)
   private List<Value> values;
}

和价值类有

private String obis;
private long value;

仅返回 obis 包含特定值的列表值元素的最快方法是什么?

谢谢!

标签: javaspringhibernatejpa

解决方案


这取决于您选择的实现,例如使用 Criteria Api:

CriteriaBuilder cb = entityManager.getCriteriaBuilder();
CriteriaQuery<Energy> cq = cb.createQuery(Energy.class);

Root<Energy> root = cq.from(Energy.class);
Join<Energy,Value> join = root.join(Energy_.values);
//If you dont use metamodel change by root.join("values")

cq.select(root);
cq.where(cb.equal(join.get(Value_.value),VALUE));
//If you dont use metamodel change by join.get("value")

List<Energy> result = entityManager.createQuery(cq).getResultList();

推荐阅读