Spring Data JPA和QueryDSL

Eri*_* B. 5 java querydsl spring-data

我是Spring数据JPA的新手,我正在尝试了解如何在QueryDSL中最好地使用它.没有QueryDSL,我可以使用@Query注释在SpringData接口中创建任何查询.

为了使用QueryDSL获得相同的体验,从我所看到的,我需要创建自己的自定义存储库实现并让我的repo接口扩展我的自定义实现接口或将我的所有QueryDSL查询放在包装我的repo的服务层.

在第一种情况下,我失去了在我的自定义仓库中使用任何SD自动生成方法(例如:findAll(QueryDSL谓词))的能力,因为我无法访问实际的仓库对象,在第二种情况下,我是将查询逻辑放在服务层而不是repo层.

这两种解决方案听起来都不是特别有吸引 有没有第三种方式更合适?或者我误解了如何正确使用QueryDSL和Spring Data?

谢谢!

埃里克

Oli*_*ohm 10

可能最方便的办法就是让你的资料库界面简单地扩展QueryDslPredicateExecutor它增加了简单地管Querydsl能力Predicate对象到存储库并执行独立或一起PageableSort等.

如果你真的想隐藏谓词组合成库层(这是绝对不错,但实际上用于不同的用途)创建描述一个独立的存储设备实现类在这里,用QueryDslRepositorySupport作为基类.在你实现查找方法,然后你可以只使用from(…),update(…)delete(…)基类的方法来轻松构建和执行使用Querydsl元模型的查询.