JPA 2 Criteria API:在没有静态元模型的集合中过滤特定字段

时间:2012-06-15 14:54:57

标签: hibernate jpa criteria

我有一个JPA数据模型如下(简化版本),我想要求在某些给定日期之间发生事件。

public class Demand {
 private Set<Event> events;
}

public class Event {
 private Date date;
}

我确实获得了对events属性的Path引用,但我不知道如何根据date属性表达一个谓词之间。

Path<Set<Evenement>> pathEvents = demand.<Set<Evenement>> get("events");
pathEvents.get("date") 

throw“org.springframework.dao.InvalidDataAccessApiUsageException:非法尝试取消引用路径源”异常。 谢谢你的帮助!

1 个答案:

答案 0 :(得分:-1)

我找到了一种获取对事件属性的引用的方法

CriteriaBuilder cb = entityManager.getCriteriaBuilder();
CriteriaQuery<Tuple> c = cb.createTupleQuery();
Root<Demand> demandes = c.from(Demand.class);
Join<Demand, Evenement> joinEvent = d.join("events", JoinType.INNER);

我无法从连接对象获取路径引用。

Path<DateTime> dateExpr = joinEvent.get("date");