2017-06-28 16 views
0

有沒有辦法處理JPA存儲庫級別的數據庫響應, 我正在使用Spring數據JPA,我的要求是執行下面的查詢所有空格(對於LASTNAME STUDENT表中的第2和第4行)應該被替換爲null。
我不想在JAVA代碼中迭代數據庫響應,並用空白填充所有空格,要求是DB本身應該在查詢執行時使用null填充它們。如果需要,我可以修改我的查詢。任何幫助,將不勝感激。有辦法處理JPA存儲庫級別的數據庫響應

Example: select * from STUDENT where CITY=NEWYORK; 

QUERY RESULT: 

FIRSTNAME LASTNAME CITY 

JOSEPH     NEWYORK 
MIKE  HUSSEY  NEWYORK 
BOB      NEWYORK 



Desired RESULT: 

FIRSTNAME LASTNAME CITY 

JOSEPH  null   NEWYORK 
MIKE  HUSSEY  NEWYORK 
BOB   null   NEWYORK 


STUDENT TABLE: 

FIRSTNAME LASTNAME CITY  

JACK  LARSEN  LONDON 
JOSEPH     NEWYORK 
MIKE  HUSSEY  NEWYORK 
BOB      NEWYORK 

回答

0

設置trim函數以消除不需要的空白。

例如

select ' ' LASTNAME from dual; 

LASTNAME 
-------- 

select trim(' ') LASTNAME from dual; 

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

所以選擇不列LASTNAMEtrim(LASTNAME) as LASTNAME

功能刪除也都開頭和結尾的空白:

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

LASTNAME 
-------- 
xx yy 

您可以定義視圖,從而使清潔在DB透明的完成。

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

否則在您的JPA查詢中使用上述選擇。

+0

在執行查詢時,我們不知道哪一列是空的,所以我們需要一個可以在任何列上工作的動態查詢。使用我們可以這樣做的情況,但如果我的表的列數更多,那將會很困難。 JPA是否提供了上述功能? –

+0

你會得到它與一些攔截器,但IMO這不是一個好主意。將清潔簡單地委託給數據庫。你不需要動態地做它,簡單地修剪所有列。 –

相關問題