Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JPA条件查询_Java_Jpa_Criteria Api - Fatal编程技术网

Java JPA条件查询

Java JPA条件查询,java,jpa,criteria-api,Java,Jpa,Criteria Api,我正在尝试编写一个独特的条件查询,使用: CriteriaBuilder builder = em.getCriteriaBuilder(); CriteriaQuery<RuleVar> query = builder.createQuery(RuleVar.class); Root<RuleVar> ruleVariableRoot = query.from(RuleVar.class); query.select(ruleVariableRoot.get("foo"

我正在尝试编写一个独特的条件查询,使用:

CriteriaBuilder builder = em.getCriteriaBuilder();
CriteriaQuery<RuleVar> query = builder.createQuery(RuleVar.class);
Root<RuleVar> ruleVariableRoot = query.from(RuleVar.class);
query.select(ruleVariableRoot.get("foo").<String>get("foo")).distinct(true);
CriteriaBuilder=em.getCriteriaBuilder();
CriteriaQuery=builder.createQuery(RuleVar.class);
Root ruleVariableRoot=query.from(RuleVar.class);
query.select(ruleVariableRoot.get(“foo”).get(“foo”)).distinct(true);
基于javadoc for CriteriaQuery.select()中的示例

CriteriaQuery q=cb.createQuery(String.class);
根顺序=q.from(order.class);
q、 选择(order.get(“shippingAddress”).get(“state”);
但是,这给了我一个错误:

The method select(Selection<? extends RuleVar>) in the type CriteriaQuery<RuleVar> is not applicable for the arguments (Path<String>)

方法select(Selection我得到了它。问题是我的CriteraQuery需要是String类型。这可以工作:

CriteriaBuilder builder = em.getCriteriaBuilder();
CriteriaQuery<String> query = builder.createQuery(String.class);
Root<RuleVar> ruleVariableRoot = query.from(RuleVar.class);
query.select(ruleVariableRoot.get(RuleVar_.varType)).distinct(true);
CriteriaBuilder=em.getCriteriaBuilder();
CriteriaQuery=builder.createQuery(String.class);
Root ruleVariableRoot=query.from(RuleVar.class);
query.select(ruleVariableRoot.get(RuleVar\ux.varType)).distinct(true);
CriteriaBuilder builder = em.getCriteriaBuilder();
CriteriaQuery<String> query = builder.createQuery(String.class);
Root<RuleVar> ruleVariableRoot = query.from(RuleVar.class);
query.select(ruleVariableRoot.get(RuleVar_.varType)).distinct(true);