【问题标题】:Equations in "order by" using jpql or criteria api使用 jpql 或标准 api 的“order by”方程
【发布时间】:2014-07-19 12:47:13
【问题描述】:

假设 mySweetTable 有 2 列 X 和 Z。

我将如何使用jpql 或标准API 实现这一目标?

SELECT *, (3 * X + Z) AS OrderCondition
FROM mySweetTable 
WHERE U LIKE "as%" or V LIKE "as%" 
ORDER BY OrderCondition DESC

【问题讨论】:

    标签: java jpql criteria-api


    【解决方案1】:

    根据 JPA 2 规范,由标量表达式制成的结果变量可以在 ORDER BY 中使用:

    orderby_item 必须是以下之一:
    ...
    引用 SELECT 子句中的可订购项目的 result_variable 已指定相同的 result_variable。这可能是 SELECT 子句中 > > aggregate_expression、scalar_expression 或 state_field_path_expression 的结果。
    ...
    SELECT o.quantity, o.cost*1.08 AS taxedCost, a.zipcode
    FROM Customer c JOIN c.orders o JOIN c.address a
    其中 a.state = ‘CA’ AND a.county = ‘Santa Clara’
    ORDER BY o.quantity, taxedCost, a.zipcode

    因此,在给定的情况下,以下应该可以工作:

    SELECT mye, (3 * mye.x + mye.y) AS ord
    FROM MyEntity mye
    WHERE mye.u LIKE 'as%' or mye.v LIKE 'as%'
    ORDER BY ord DESC
    

    【讨论】:

    • 没想到这么简单。我会试一试。谢谢。
    【解决方案2】:

    这个答案能解决你的问题吗?将方程映射到 MySweetTable 实体上的属性,然后按该属性排序。

    Mapping calculated properties with JPA

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-04-30
      • 1970-01-01
      • 2012-01-14
      • 2011-04-06
      • 1970-01-01
      • 2010-12-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多