有没有办法在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
答案 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查询中使用上面的选择。