我刚接触Spring Data JPA,并试图了解如何最好地将其与QueryDSL一起使用。在没有QueryDSL的情况下,我可以使用@Query注释在SpringData接口中创建任何查询。
从我所看到的情况来看,为了使用QueryDSL获得相同的体验,我需要创建自己的自定义存储库实现,并使我的repo接口扩展我的自定义实现接口,或者将我所有的QueryDSL查询放置在服务层中,该服务层包装我的repo。
在第一种情况下,我失去了使用任何SD自动生成方法(例如:findAll(QueryDSL predicate))的能力,因为我无法访问实际的repo对象,在第二种情况下,我将查询逻辑放在了服务层而不是repo层。
对我来说,两种解决方案都不是特别吸引人。是否有第三种更合适的方式?或者我误解了如何正确使用QueryDSL和Spring Data?
谢谢!
Eric
QueryDslPredicateExecutor
不允许使用groupBy
等操作,只能使用查询的where
部分。这通常是不够的。但是,使用QueryDslRepositorySupport
作为基类的自定义存储库实现非常好! - Ruslan Stelmachenko