java - Spring Data JPA 和 QueryDSL

标签 java spring-data querydsl

我是 Spring data JPA 的新手,正在尝试了解如何最好地将它与 QueryDSL 结合使用。如果没有 QueryDSL,我将能够使用 @Query 注释在我的 SpringData 接口(interface)中简单地创建任何查询。

为了使用 QueryDSL 获得相同的体验,据我所知,我需要创建自己的自定义存储库实现并让我的 repo 接口(interface)扩展我的自定义实现接口(interface),或者将我所有的 QueryDSL 查询放在服务层包装我的 repo 协议(protocol)。

在第一种情况下,我无法在我的自定义存储库中使用任何 SD 自动生成的方法(例如:findAll(QueryDSL predicate) ),因为我无权访问实际的存储库对象,在第二种情况下如果我将查询逻辑放在服务层而不是 repo 层。

这两种解决方案对我来说都不是特别有吸引力。有没有第三种方法更合适?还是我误解了如何正确使用 QueryDSL 和 Spring Data?

谢谢!

埃里克

最佳答案

可能最方便的方法是让您的存储库接口(interface)简单地扩展 QueryDslPredicateExecutor ,它添加了简单地将 Querydsl Predicate 对象通过管道传输到存储库中并独立或一起执行它们的功能PageableSort 等。

如果您真的想将谓词组合隐藏到存储库层中(这绝对没问题,但实际上有不同的用途),您可以创建一个单独的存储库实现类,如 here 所述。并使用 QueryDslRepositorySupport 作为基类。在您实现的查找器方法中,您可以只使用基类的 from(...)update(...)delete(...) 方法使用 Querydsl 元模型轻松构造和执行查询的类。

关于java - Spring Data JPA 和 QueryDSL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13482389/

相关文章:

java - 使用 JEditorPane 打开文本文件

使用 java 8 默认方法和实用程序类的 Java 通用枚举功能

spring - 是否可以在spring elasticsearch中使用_update_by_query

java - 如何在 Spring Data MongoDB 中保存和查询动态字段?

java - @Document 注释中的 MongoDB 和 SpEL 表达式

java - QueryDSL 投影和空值

java - Spring Boot + QueryDSL : com. mysema.query 包类缺失

java - 如何从原声带(最好是 mp3)中删除人声

java - 来自 URL 的 InputStream

java - 使用 querydsl 如何检查由一对多关系产生的一组对象中的特定对象?