If/Case-Anweisung in JPA Criteria Builder

Möchte ich den Aufbau einer Abfrage die Suche nach Daten auf verschiedenen entites. Meine Struktur ist:

  • Vertrag Datum (nicht nullable)
  • Arbeitnehmer Datum (nicht nullable)
  • Mitarbeiter kann eine Vertrags-id (nullable)

Wenn ein Mitarbeiter einen Vertrag, den ich abrufen möchten, Tag des Vertragsschlusses. Wenn ein Mitarbeiter nicht über einen Vertrag, dann möchte ich zu dem zurückkehren des Mitarbeiters Datum.

Mein code bisher ist:

if (inputDate!= null) {
    ParameterExpression<Date> exp = criteriaBuilder.parameter(Date.class, "inputDate");
    criteria.add(criteriaBuilder.or(
        criteriaBuilder.isNull(employee.get("contract")),
        criteriaBuilder.lessThanOrEqualTo(employee.<Date>get("creationDate"), exp),   criteriaBuilder.lessThanOrEqualTo((employee.join("contract").<Date>get("fromDate")), exp) ));}

Scheint dies nicht zu funktionieren. Ich habe immer scheinen zu gehen, in der isNull-von denen ich nicht erwarten.

Ich bin gerne in diese einige mehr, aber ich denke, meine Frage ist, ob dies der richtige Weg zu gehen über es. Ist es? Ich habe gesehen, dass selectCase als auch in criteriaBuilder so vielleicht, das vielleicht die bessere Lösung.

Alle Zeiger würde stark empfangen werden.

Dank

InformationsquelleAutor RNJ | 2012-04-19

Schreibe einen Kommentar