Wie handhaben, wenn query-parameter ist null oder leer im Winterschlaf?
Ich bin mit JPA, hibernate 3.
String sqlQuery = " FROM TraceEntityVO where lotNumber =:lotNumber and mfrLocId=:mfrLocId and mfrDate=:mfrDate and qtyInitial=:qtyInitial and expDate=:expDate";
Query query = entityManager.createQuery(sqlQuery)
.setParameter("lotNumber", traceEntityVO.getLotNumber())
.setParameter("mfrLocId", traceEntityVO.getMfrLocId())
.setParameter("mfrDate", traceEntityVO.getMfrDate())
.setParameter("qtyInitial", traceEntityVO.getQtyInitial())
.setParameter("expDate", traceEntityVO.getExpDate());
Diese Abfrage funktioniert wie ein Charme, wenn es keine leer-oder null-Werte. Aber es könnte möglich sein, null-oder leerer Wert für traceEntityVO.getLotNumber(),traceEntityVO.getMfrLocId(),traceEntityVO.getExpDate().
In diesem Fall den Wert "null" oder " überprüft, die variable statt null ist Zustand. Wie verfahre ich, wenn ich bin nicht sicher über die parameter Wert, der entweder null oder leer?
Ich will nicht zum erstellen der Abfrage dynamisch auf der Grundlage der Werte, wenn leer oder null ist.
Ist das möglich?
Vielen Dank im Voraus..
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich denke, dass kann man wirklich nicht tun, ohne eine dynamische Abfrage.
Den Bau einer solchen Abfrage ist jedoch leicht mit den Kriterien, die API (hibernate) (JPA), ließ Sie es halten?
Ich hoffe, dass Sie folgenden code zu Sortieren, Ihr problem. Vorausgesetzt, getMfrDate und getExpDate zurück Date-Objekt und andere, die entweder Zahl oder String-Objekte. Aber Sie können ändern, IsEmpty nach Rückgabetypen.
bauen Sie Ihre Abfrage nach Ihren Parametern (null oder nicht) mit Hilfe der bedingten Anweisung if()
wie in diesem Beispiel für das Datum: