JPA标准订单有两个标准



我需要在"订单"子句中使用此语句构建一个标准:

ORDER BY COL.NOMCOL ASC,
CASE COL.TDN_ECO 
    WHEN TO_CHAR(5381) THEN 1 
    WHEN TO_CHAR(5380) THEN 2 
    WHEN TO_CHAR(5383) THEN 3
    WHEN TO_CHAR(5382) THEN 4
    WHEN TO_CHAR(5384) THEN 5

我尝试了:

List<Order> orderList = new ArrayList<Order>();
orderList.add(cb.asc(cb.selectCase().when(cb.equal(root.get("tdnEco"), ConstantesCliente.TIPO_DOMINIO_APROBADO), 1).when(cb.equal(root.get("tdnEco"), ConstantesCliente.TIPO_DOMINIO_ABIERTO), 2)
                .when(cb.equal(root.get("tdnEco"), ConstantesCliente.TIPO_DOMINIO_PTE_TRAMITE), 3).when(cb.equal(root.get("tdnEco"), ConstantesCliente.TIPO_DOMINIO_RECHAZADO), 4)
                .when(cb.equal(root.get("tdnEco"), ConstantesCliente.TIPO_DOMINIO_RECHAZADO), 5)));
orderList.add(cb.asc(root.get("nomCol")));
query.orderBy(orderList);

,但给我以下错误。

java.lang.reflect.invocationTargetException org.hibernate.jpa.criteria.expression.searchedcaseexpression:125

任何人可以帮我吗?

它只需要一个.othothise()子句才能正常工作,因此答案是:

List<Order> orderList = new ArrayList<Order>();
    orderList.add(cb.asc(cb.selectCase().when(cb.equal(root.get("tdnEco"), ConstantesCliente.TIPO_DOMINIO_APROBADO), 1).when(cb.equal(root.get("tdnEco"), ConstantesCliente.TIPO_DOMINIO_ABIERTO), 2)
            .when(cb.equal(root.get("tdnEco"), ConstantesCliente.TIPO_DOMINIO_PTE_TRAMITE), 3).when(cb.equal(root.get("tdnEco"), ConstantesCliente.TIPO_DOMINIO_RECHAZADO), 4)
            .when(cb.equal(root.get("tdnEco"), ConstantesCliente.TIPO_DOMINIO_RECHAZADO), 5).otherwise(6)));
    orderList.add(cb.asc(root.get("nomCol")));
    query.orderBy(orderList);

相关内容

  • 没有找到相关文章

最新更新