使用jpql或标准api的“order by”中的等式

时间:2014-07-19 12:47:14

标签: java jpql criteria-api

我们假设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

2 个答案:

答案 0 :(得分:0)

这个答案能否解决您的问题?将等式映射到MySweetTable实体上的属性,然后按该属性排序。

Mapping calculated properties with JPA

答案 1 :(得分:0)

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

  

orderby_item必须是以下之一:
  ...
  result_variable,它引用SELECT子句中的可订购项   已指定相同的result_variable。这可能是>的结果。 > SELECT子句中的aggregate_expression,scalar_expression或state_field_path_expression。
  ...
      SELECT o.quantity,o.cost * 1.08 AS taxedCost,a.zipcode
      来自客户c加入c.orders o加入c.address a
      在哪里a.state ='CA'和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