Java Kriterien builder Abfrage nicht null oder leer ist
Ich versuche zu überprüfen, ob eine Spalte in der db ist keine leere Zeichenfolge ist oder nicht null ist, aber ich kann nicht herausfinden wie Sie es tun, mit Kriterien-generator Abfragen, um die tatsächlichen Objekte zurück. Dieses sql funktioniert:
sampleName is not null and sampleName != ''
Aber wenn ich versuche, es zu tun, mit Kriterien builder wie diesem:
//dies ist eine private Methode filterBySampleNotEmpty
cb.notEqual(root.get("sampleName"), "");
genannt, indem dieser in einer anderen Methode
CriteriaBuilder criteriaBuilder = em.getCriteriaBuilder();
CriteriaQuery<Sample> query = criteriaBuilder.createQuery(Sample.class);
Root model = query.from(Sample.class);
List<Predicate> predicates = new ArrayList<>();
predicates.add(filterBySampleNotEmpty(model, criteriaBuilder));
query.select(model).where(predicates.toArray(new Predicate[]{}));
Gibt es die ganze Liste noch.
- Können Sie zeigen ein bisschen mehr von deinem code? Wie haben Sie gebaut/konfiguriert cb und root?
- Meine schlecht, ich fügte hinzu, mehr.
- In der 'where' - Klausel, können Sie versuchen
predicates.toArray(new Predicate[predicates.size()]
und sehen, ob das funktioniert?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Bitte machen Sie einen Versuch mit der folgenden
CriteriaBuilder
bearbeitet haben meine Antwort überprüfen Sie bitte die gleichenEntityType
können Sie bitte überprüfen Sie es..Versuchen, verwenden Sie diesen code:
Den Kriterien builder "notEqual" Kriterien der Prüfung, dass zwei Ausdrücke nicht gleich sind. Ich kann nicht sehen, die Kriterien zu filtern null Wert, wenn ich etwas verpasst.
In der 'where' - Klausel, versuchen
predicates.toArray(new Predicate[predicates.size()]
und sehen, ob das funktioniert. Wenn Sie konvertieren dieList
zuArray
Sie sind unter Angabe der Größe 0, da Sie die übergabe eines leeren array.