Java 在使用JPA的查询和元模型之间

Java 在使用JPA的查询和元模型之间,java,jpa-2.0,Java,Jpa 2.0,我正试图用JPA2编写一个中间查询 Integer zipCode = 50000; CriteriaBuilder builder = getEntityManager().getCriteriaBuilder(); CriteriaQuery<Territory> query = builder.createQuery(Territory.class); Metamodel m = getEntityManager().getMetamodel(); Root<Terri

我正试图用JPA2编写一个中间查询

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=50000;
CriteriaBuilder=getEntityManager().getCriteriaBuilder();
CriteriaQuery=builder.createQuery(Territory.class);
元模型m=getEntityManager().getMetamodel();
Root=query.from(Territory.class);
//startZipCodeRange和endZipCodeRange之间的zipCode
谓词条件=builder.between(zipCode,root.get(Territory_u.startZipCodeRange),root.get(Territory_u.endZipCodeRange));
最后一行未编译,因为zipCode不是Expression类型。 是否可以将zipCode转换为表达式?如果是的话,我该怎么做。

您可以使用 如果Territory确实具有zipcode属性,则将root.get(Territory_uz.zipcode)作为between函数的第一个参数

有关更多详细信息,请参阅此答案上的注释。

您可以使用 如果Territory确实具有zipcode属性,则将root.get(Territory_uz.zipcode)作为between函数的第一个参数


有关更多详细信息,请参阅此答案上的注释。

zipCode是一个整数值。我想从数据库中获取所有值,其中50000位于startZipCodeRange和end endZipCodeRange之间。如果是这种情况,那么您应该使用以下条件生成器。and(builder.gt(root.get(Territory_u.startZipCodeRange),50000),builder.lt(root.get(Territory_zipCodeRange),50000);谢谢这就是我最后要做的。我仍然不确定是否可以使用between运算符。zipCode是一个整数值。我想从数据库中获取所有值,其中50000位于startZipCodeRange和end endZipCodeRange之间。如果是这种情况,那么您应该使用以下条件生成器。and(builder.gt(root.get(Territory_u.startZipCodeRange),50000),builder.lt(root.get(Territory_zipCodeRange),50000);谢谢这就是我最后要做的。我仍然不确定是否可以使用中间操作员。