使用JPA和Metamodel进行BETWEEN查询

时间:2011-03-03 17:41:17

标签: java jpa-2.0

我正在尝试用JPA 2编写一个查询之间。

Integer zipCode = 50000;
CriteriaBuilder builder = getEntityManager().getCriteriaBuilder();
CriteriaQuery<Territory> query = builder.createQuery(Territory.class);
Metamodel m = getEntityManager().getMetamodel();

Root<Territory> root = query.from(Territory.class);

// zipCode between startZipCodeRange and endZipCodeRange
Predicate condition = builder.between(zipCode , root.get(Territory_.startZipCodeRange), root.get(Territory_.endZipCodeRange));

最后一行无法编译,因为zipCode不是Expression类型。 是否可以将zipCode转换为Expression?如果是这样,我该怎么做。

1 个答案:

答案 0 :(得分:1)

你可以使用 root.get(Territory_.zipcode)作为函数之间的第一个参数if,Territory确实有zipcode属性。

有关详细信息,请参阅此答案的评论。