有什么方法可以将此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,则返回基于商人ID的结果集, 或如果只有txnId为null,则为商人ID和订单ID, 如果没有人为空,则对这三个都进行
谢谢。
答案 0 :(得分: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));
}
但是我认为可以使用更好的代码来完成。