2017-06-28 4 views
0

zu behandeln Gibt es eine Möglichkeit, DB-Antwort in JPA-Repository-Ebene zu behandeln, Ich verwende Spring-Daten JPA und meine Anforderung ist auf die Ausführung von unten Abfrage alle Leerzeichen (für LASTNAME 2. und 4. Reihe in der STUDENT-Tabelle) sollte durch Null ersetzt werden.
Ich möchte nicht die DB-Antwort in JAVA-Code zu iterieren und füllen Sie alle leeren Leerzeichen mit Null, Anforderung ist DB selbst sollte sie mit Null bei Abfrageausführung aufzufüllen. Ich kann meine Abfrage ändern, falls erforderlich. Jede Hilfe wird sehr geschätzt.Gibt es eine Möglichkeit, DB-Antwort in JPA-Repository-Ebene

Antwort

0

Uset die trim Funktion, um die nicht gewünschten Leerzeichen zu entfernen.

Beispiel

select ' ' LASTNAME from dual; 

LASTNAME 
-------- 

select trim(' ') LASTNAME from dual; 

LASTNAME 
-------- 
(null) 

wählen Also nicht die Spalte LASTNAME aber trim(LASTNAME) as LASTNAME.

Die Funktion Entfernen Sie auch alle führenden und nachfolgenden Leerzeichen:

select trim(' xx yy ') LASTNAME from dual; 

LASTNAME 
-------- 
xx yy 

Sie eine Ansicht definieren kann, so dass die Reinigungs transparent im DB erfolgt.

create view V_STUDENT as 
select 
    trim(FIRSTNAME) as FIRSTNAME, 
    trim(LASTNAME) as LASTNAME, 
    trim(CITY) as CITY 
from STUDENT 

Andernfalls verwenden Sie die oben in Ihrer JPA-Abfrage auswählen.

+0

Während der Abfrage wissen wir nicht, welche Spalte leer ist, also wollen wir eine dynamische Abfrage, die auf jeder Spalte funktionieren kann. Wenn wir den Fall verwenden, können wir das tun, aber das wird schwierig, wenn mein Tisch mehr Spalten haben wird. Gibt es eine Funktion, die JPA oben bietet? –

+0

Sie werden es für usre mit einigen Interceptor bekommen, aber IMO ist das keine gute Idee. Delegieren Sie einfach die Reinigung in die Datenbank. Sie müssen es nicht dynamisch machen, einfach alle Spalten trimmen. –

Verwandte Themen