Querydsl是一个框架,它允许为多个后端构建类型安全的类SQL查询,包括Java中的JPA,MongoDB和SQL。
如何使用Querydsl和Spring Data轻松实现“REST API查询语言”来过滤实体?
如何使用Spring Data轻松实现一种“REST API查询语言”来过滤实体? 例如,对于以下 Person 实体: @数据 @实体 公共类人{ @ID @
我有一个查询需要基于过滤器的动态 SQL WHERE 子句。 问题 如果我在前一个过滤器不存在的情况下添加“AND”,它可能会给我一个 NullPointerException (NPE)...
带有任意 AND 子句的动态 spring data jpa 存储库查询
我正在使用 Spring data jpa 存储库,需要提供不同字段的搜索功能。搜索前输入字段是可选的。我有 5 个字段,分别是员工编号、姓名、已婚、
我有一个实体 A(例如 Car)与实体 B(例如 CarProperty)具有一对多关系。 My Car Repository 扩展了 QueryDslPredicateExecutor 以支持分页和排序: 页 查找全部(
我正在尝试在 QueryDSL 中编写一个查询来获取按其parentId分组的表中最旧的元素。 SQL 等效项应该是: 从子 a 中选择 a.* 内连接 ( 选择
插件{ id“org.springframework.boot”版本“3.3.2” id“io.spring.dependency-management”版本“1.1.6” id“io.freefair.lombok”版本&qu...
Springboot3 + JDK17 + Gradle 未生成 Qclass(不存在的 Qclass)
spirngboot 3.3.1 + JDK17; Springboot 2.7迁移到3.3过程中出现问题 我的构建.gradle.kts 在此处输入图像描述插件 { id(“java”) id("org.springfram...
Elastic Search / Hibernate Search:如何在 java 中使用查询 DSL API 编写异或运算符?
我正在使用 hibernate search java API 来生成弹性搜索查询。我在编写异或运算符时遇到问题。通常我会写: 私有无效 applyXorOperator(BooleanPredicateClausesStep
如果我在查询中添加where子句,Postgres偏移量将扫描整个表?
我有 100 000 条记录,其中 20 条记录与具体用户相关。 我正在寻找确认,向查询添加 where 子句将使 offset 子句仅扫描这 20 行....
我在 JBoss 上使用 QueryDSL-JPA,并且希望在某一时刻从与我通常使用的表不同的表中选择一个实体,并通过 @Table 进行注释。我不想创建一个单独的 Java cl...
我正在尝试在我的 eclipse maven 项目中使用 QueryDSL。这些是依赖关系。 我正在尝试在我的 eclipse maven 项目中使用 QueryDSL。这些是依赖项。 <properties> <!-- The main class to start by executing java -jar --> <start-class>my.app.market.DBApp</start-class> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> <querydsl.version>4.1.4</querydsl.version> <apt-maven-plugin.version>1.1.3</apt-maven-plugin.version> </properties> <dependency> <groupId>com.querydsl</groupId> <artifactId>querydsl-apt</artifactId> <version>4.1.4</version> <scope>provided</scope> </dependency> <dependency> <groupId>com.querydsl</groupId> <artifactId>querydsl-jpa</artifactId> <version>4.1.4</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>1.6.1</version> </dependency> <build> <plugins> <plugin> <groupId>com.mysema.maven</groupId> <artifactId>apt-maven-plugin</artifactId> <version>1.1.3</version> <executions> <execution> <goals> <goal>process</goal> </goals> <configuration> <outputDirectory>target/generated-sources</outputDirectory> <processor>com.querydsl.apt.jpa.JPAAnnotationProcessor</processor> </configuration> </execution> </executions> </plugin> </plugins> </build> 此后我尝试编写查询。 @Repository public class QueryDSLRepo { @PersistenceContext private EntityManager em; public ReportingParamDAO save(final ReportingParamDAO reportingParamDAO) { em.persist(reportingParamDAO); return reportingParamDAO; } public List<ReportingParamDAO> findreportingParamDAOsByIdQueryDSL(final Integer id) { final JPAQuery<ReportingParamDAO> query = new JPAQuery<>(em); final QReportingParamDAO reportingParamDAO = QReportingParamDAO.reportingParamDAO; return query.from(reportingParamDAO).where(reportingParamDAO.id.eq(id)).fetch(); } } 但我收到错误 QReportingParamDAO cannot be resolved to a type 注意:ReportingParamDAO是实体类。 这意味着我的 DAO 的 Q 类型类没有生成。我不确定为什么它没有生成。我还需要做其他事情吗?我遇到了 this 帖子,但用户正在处理 IntelliJ,我似乎无法让它在我的情况下工作。有人可以帮帮我吗。谢谢!! 我已经用你的 pom.xml 进行了测试。 Q 类是为我生成的,但我无法从源代码中访问它们。问题是生成的源默认不在类路径上。将其添加到类路径中,您将能够在源代码中使用它们。 检查 target/ generated-sources 目录以查看这些类是否确实存在。 (你应该能够找到它们,因为我用你的 pom.xml 进行了测试) 如果将目标/生成源添加到类路径,您的应用程序将运行。但我认为这不是一个好主意。因为类路径中的所有文件都会被 IDE 索引,并且你的 IDE 会变慢。 generated-sources 文件夹中的所有文件不需要建立索引。因此,将 target/generated-sources/java 添加到类路径中,并将生成的 Q 类的 query-dsl 插件更改为 target/generated-sources/java 就我而言,导致错误的是 Java 14(预览功能)中的 """ multiline string """ 语法。 我通过mvn clean compile -e弄清楚了。 我最近也遇到了同样的问题。 似乎 apt-maven-plugin 不喜欢空的 .java 文件。 如果你的项目中有一个,他不会生成任何类而不指示空文件,这可能很难找到。 为了解决这个问题,我将插件 com.mysema.maven 放在插件 org.codehaus.mojo 之前,这使得生成的源代码被放在正确的文件夹中并被 intelijj 识别。例子: ... <plugin> <groupId>com.mysema.maven</groupId> <artifactId>apt-maven-plugin</artifactId> <version>1.1.3</version> <executions> <execution> <goals> <goal>process</goal> </goals> <configuration> <outputDirectory>${basedir}/target/generated-sources</outputDirectory> <processor>com.querydsl.apt.jpa.JPAAnnotationProcessor</processor> </configuration> </execution> </executions> </plugin> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>build-helper-maven-plugin</artifactId> <version>${build.helper.maven.version}</version> <executions> <execution> <phase>generate-sources</phase> <goals> <goal>add-source</goal> </goals> <configuration> <sources> <source>target/generated-sources</source> </sources> </configuration> </execution> </executions> </plugin> .... </plugins> </build> 注意:我正在使用 IntelliJ 我在生成文件(Q 类)时遇到了麻烦,结果发现使用 IntelliJ 构建我的 Maven 项目不起作用,所以我必须在命令行中运行此命令来构建项目: ./mvnw install 这些文件是为我生成的,为了能够在我的源代码中使用这些生成的文件,我必须标记包含这些文件的文件夹 文件作为“生成的源根”,因此在本例中导航到此路径: target/generated-sources/java 鼠标右键单击 java 文件夹 --> 将目录标记为 --> 生成的源根目录。 此后,您将能够在源代码中导入这些 Q 类。 我在 2024 年使用 QueryDSL 版本 5.1.0 时遇到了同样的问题,我使用包含“jakarta”的“classifier”字段解决了这个问题,如下所示: <dependency> <groupId>com.querydsl</groupId> <artifactId>querydsl-apt</artifactId> <version>${querydsl.version}</version> <classifier>jakarta</classifier> <scope>provided</scope> </dependency>
我正在使用 OpenSearch Dashboard 来查找特定日志。我需要使用查询 DSL 过滤它们以获得以下结果: “sText”:“.*任务已开始”或“sText”:“.*...
我该怎么写: 选择前 1 个 来自 y 按 NEWID() 排序 使用querydsl-sql? (有关查询功能的说明,请参阅 https://stackoverflow.com/a/4980733/14731)
如何通过Query dsl NumberExpression列进行排序
在mariadb中,我创建了计算用户点和地点点之间距离的函数 /* 创建函数 */ 分隔符 $$ 创造 函数 `u_st_distance_sphere`(`user_point` PO...
当实体中存在 oneTomany 关系时,Querydsl 获取速度非常慢
在一个项目中,我们使用 Querydsl 创建动态查询并应用排序和分页。当以下对象中存在 oneTomany 和 Manytoone 关系时,以下代码非常慢
我刚刚开始学习querydsl。我想做简单的过滤操作。我看到有两种不同的方法可以做到这一点。第一个是使用 @QuerydslPredicate 注释进行绑定,...
Java QueryDSL:仅当组中不存在空值时,如何才能检索列?
所以我有一张桌子(订单): ID CUSTOMER_ID 地点 1 11 伦敦 2 空 伦敦 3 22 阿姆斯特丹 4 33 阿姆斯特丹 5 ...
我第一次使用querydsl,遇到了一个我无法解释或弄清楚为什么会发生的问题。 我有这 4 个实体: @EqualsAndHashCode(仅显式包含= true) @
我想知道如何处理MySQL JSON列。 产品表: ... 类别_ids json 空, ... 类别 ID 例如:[19, 102, 108] 如果我想搜索...
这个问题已经在stackoverflow上多次出现,但它并没有解决我的问题,我正在使用带有queryDSL 5.0的Java 17和带有lombok 1.18.30和gradle 7.4.1的Spring boot 3.2.0