将Oracle NVl Query转换为Criteria Query

loading...


0

有没有办法将此Oracle Query转换为Criteria Query .

SELECT * FROM T_MERCHANT_ORDER_DETAILS where MERCHANT_ID = in_merchantId and ORDER_ID= nvl(in_orderId,ORER_ID) and 
TRANSACTION_ID=nvl(in_txnId,TRANSACTION_ID);

in_merchantId和in_orderId是传递给oracle过程的变量 . 我可以在Hibernate中这样做吗?

注:::如果orderId和txnId为null,则返回基于merchantId的结果集;如果只有txnId为null,则返回merchantId和orderId;如果没有,则返回所有三个结果集 .

提前致谢 .

loading...

1回答

  • 0

    我这样做是为了让它发挥作用 .

    if(orderId==null && transactionId ==null) {
            criteria.select(root).where(builder.equal(root.get("merchantId"),merchantId));
        }
        else if(transactionId==null && orderId!=null) {
            criteria.select(root).where(builder.equal(root.get("merchantId"),merchantId),builder.equal(root.get("orderId"),orderId));
        }
        else {
            criteria.select(root).where(builder.equal(root.get("merchantId"),merchantId),builder.equal(root.get("transactionId"),transactionId));
        }
    

    但我认为可以用更好的代码来完成 .

评论

暂时没有评论!