Problem mit JPA-Abfrage und Nullhandhabung und Fallempfindlichkeit [geschlossen]Java

Java-Forum
Anonymous
 Problem mit JPA-Abfrage und Nullhandhabung und Fallempfindlichkeit [geschlossen]

Post by Anonymous »

Ich habe Probleme, eine JPA-Abfrage zu schreiben, die beim Filtern durch ein Zeichenfolgenfeld die Nullwerte und die Fallempfindlichkeit korrekt behandelt. Ich habe eine Abfrage, die nach Bestellungen sucht, die auf mehreren Kriterien basieren, einschließlich des Bestellstatus. Ich brauche die Status-Lookup, um von Fall unempfindlich zu sein, aber ich brauche auch die Abfrage, um alle Bestellungen zurückzugeben, wenn der Statusparameter null ist. < /P>
Hier ist meine aktuelle JPA-Abfrage:

Code: Select all

@Query("SELECT o FROM OrderEcom o WHERE  o.remove = false and o.orderNumber is not null and o.client.id = :clientId and o.createDate between :dateIn " +
"and :dateEnd and (:subscriptionId is NULL or o.subscriptionId = :subscriptionId) and (:orderOrigin is NULL or o.orderOrigin = :orderOrigin) " +
"and (:externalReferenceValue is NULL or o.externalReferenceValue = :externalReferenceValue) " +
"and ((:status is NULL) or (lower(o.status) = lower(:status)))")
Page findAllByClientAndCreateDate(@Param("clientId") Long clientId, Pageable pageable,
@Param("dateIn") Date dateIn,
@Param("dateEnd") Date dateEnd,
@Param("subscriptionId") Long subscriptionId,
@Param("orderOrigin") Integer orderOrigin,
@Param("externalReferenceValue") String externalReferenceValue,
@Param("status") String status);
< /code>
Das [url=viewtopic.php?t=20324]Problem[/url] ist, dass, wenn: der Status null ist, die Funktion lower () weiterERROR: function lower(bytea) does not exist
Dica: No function matches the given name and argument types. You might need to add explicit type casts.
Posição: 4564
< /code>
Ich habe versucht, die Koalesce -Funktion zu verwenden, um den Fehler zu vermeiden, wenn: der Status null ist, aber ich habe immer noch Probleme. < /p>
@Query("SELECT o FROM OrderEcom o WHERE  o.remove = false and o.orderNumber is not null and o.client.id = :clientId and o.createDate between :dateIn " +
"and :dateEnd and (:subscriptionId is NULL or o.subscriptionId = :subscriptionId) and (:orderOrigin is NULL or o.orderOrigin = :orderOrigin) " +
"and (:externalReferenceValue is NULL or o.externalReferenceValue = :externalReferenceValue) " +
"and ((:status is NULL) or (lower(coalesce(o.status, '')) = lower(coalesce(:status, ''))))")
Page findAllByClientAndCreateDate(@Param("clientId") Long clientId, Pageable pageable,
@Param("dateIn") Date dateIn,
@Param("dateEnd") Date dateEnd,
@Param("subscriptionId") Long subscriptionId,
@Param("orderOrigin") Integer orderOrigin,
@Param("externalReferenceValue") String externalReferenceValue,
@Param("status") String status);

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post