【问题标题】:JPQL Query with calculated value?具有计算值的JPQL查询?
【发布时间】:2016-03-06 13:01:30
【问题描述】:

我想在 WHERE 子句和 ORDER BY 表达式中使用计算值。在普通的 sql 中,它看起来像

SELECT some, colums, (some arbitrary math) AS calc_value FROM table WHERE calc_value <= ? ORDER BY calc_value

如果我在 JPQL 中尝试

entitymanager.createQuery("SELECT e, (some arbitrary math) AS calc_value FROM Entity e WHERE calc_value <= :param ORDER BY calc_value", Entity.class);

它失败了。显然,因为查询的返回是Entity和calc_value的元组(即Double)。

有没有一种方法可以使用强类型返回值(即 Entity.class,因为计算值无关紧要)将其放入一个查询中。

【问题讨论】:

标签: jpql


【解决方案1】:

我遇到了类似的问题,但没有解决问题以将其提取到正确的对象中:

  • 尝试了对象的所有构造函数组合 - 没有运气。
  • 尝试了 Tuple.class - 没有运气。

最后我使用了这种方法,然后将 oject[0] 提取到我真正的 Java-Object 中:

TypedQuery<Object[]> q = em.createQuery("select v, (2 * 4) as temp from MyObject v order by temp", Object[].class);
List<Object[]> results = q.getResultList();

for (Object[] o : results) 
  MyObject mo = (MyObject) o[0];

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-09
    • 1970-01-01
    • 2011-03-27
    • 2018-11-25
    • 2021-10-21
    • 1970-01-01
    相关资源
    最近更新 更多