代码之家  ›  专栏  ›  技术社区  ›  jeremy123456

使用jpql或criteria api以“order by”表示的方程式

  •  0
  • jeremy123456  · 技术社区  · 10 年前

    假设mySweetTable有两列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 回复  |  直到 10 年前
        1
  •  0
  •   Mikko Maunu    10 年前

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

    orderby_item必须是以下之一:
    ...
    result_variable,它引用SELECT子句中的可订购项 指定了相同的result_variable。这可能是>>SELECT子句中的aggregate_expression、scalar_expression或state_field_path_expression。
    ...
    选择o.quantity,o.cost*1.08 AS taxedCast,a.zipcode
    来自客户c JOIN c.order o JOIN c.address a
    其中a.state=加利福尼亚州和a.county=圣克拉拉
    订单按o.quantity,taxedCast,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
  •  0
  •   Community miroxlav    7 年前

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

    Mapping calculated properties with JPA