我有一个自定义SQL如下:
select * from
(
select shp.id, shp.status, shp.establish_date, shp.type
from shop shp
inner join book bk
on shp.id = bk.shop_id
where
and shp.id not in
(
select distinct bl.shop_id from banned_list bl
where
bl.country_risk = 'HIGH'
)
) t1
但是,我可能还想添加shp.id、shp.status、shp.establish_date、shp. type字段的动态过滤器。此外,还有分页和排序。
如果我使用规范,它将是复杂的,难以维护。如果我使用原生SQL查询,有很多字符串拆分和连接以及SQL注入的危险。
JPA中的最佳解决方案是什么?
1条答案
按热度按时间zed5wv101#
我建议使用Querydsl,它支持动态过滤器,原生查询等。
spring-data-jpa
也支持此扩展。最酷的事情是构建器语法非常容易阅读和维护。又一个Doc给你