【问题标题】:JPA Criteria Query distinctJPA Criteria Query distinct
【发布时间】:2012-09-07 21:07:58
【问题描述】:

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

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);

基于 CriteriaQuery.select() 的 javadoc 中的示例

CriteriaQuery<String> q = cb.createQuery(String.class);
 Root<Order> order = q.from(Order.class);
 q.select(order.get("shippingAddress").<String>get("state"));

但是,这给了我一个错误:

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

有人可以指出我做错了什么吗?或者如何从 Path 中获取 Selection 对象?

【问题讨论】:

    标签: java jpa criteria-api


    【解决方案1】:

    我明白了。问题是我的 CriteraQuery 需要是字符串类型。这有效:

    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);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-02-27
      • 2013-08-25
      • 2017-05-02
      • 2014-08-28
      • 2014-11-27
      • 2016-10-31
      • 2020-06-13
      • 2020-02-22
      相关资源
      最近更新 更多