hibernate 如何在JPA中混合使用自定义SQL和动态过滤SQL?

2w2cym1i  于 2023-10-23  发布在  其他
关注(0)|答案(1)|浏览(113)

我有一个自定义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中的最佳解决方案是什么?

zed5wv10

zed5wv101#

我建议使用Querydsl,它支持动态过滤器,原生查询等。spring-data-jpa也支持此扩展。最酷的事情是构建器语法非常容易阅读和维护。又一个Doc给你

相关问题