将 Oracle NVl 查询转换为条件查询

有什么方法可以将此 Oracle 查询转换为条件查询。


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,则返回基于 MercerId 的结果集,如果只有 txnId 为 null,则返回基于 MercerId 和 orderId 的结果集,如果没有一个为 null,则返回所有三个。


提前致谢。


斯蒂芬大帝
浏览 241回答 1
1回答

素胚勾勒不出你

我这样做是为了让它工作。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));    }但我认为可以用更好的代码来完成。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java