有没有办法在JPA存储库级别处理数据库响应

时间:2017-06-28 10:07:10

标签: oracle spring-data-jpa

有没有办法在JPA存储库级别处理数据库响应, 我正在使用Spring数据JPA,我的要求是执行下面的查询所有空格(对于STUDENT表中的LASTNAME第2和第4行)应该替换为null。
我不想在JAVA代码中迭代数据库响应并用空填充所有空格,要求是DB本身应该在查询执行时使用null填充它们。如果需要,我可以修改我的查询。对此的任何帮助将不胜感激。

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

1 个答案:

答案 0 :(得分:0)

使用trim功能消除不需要的空白。

示例

select '   ' LASTNAME from dual;

LASTNAME
--------

select trim('   ') LASTNAME from dual;

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

因此,不要选择列LASTNAME,而选择trim(LASTNAME) as LASTNAME

该功能还删除所有前导和尾随空白:

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

LASTNAME
--------
xx yy 

您可以定义视图,以便在数据库中透明地完成清理。

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

否则在JPA查询中使用上面的选择。