From 231b0b1ffa58872ea9e616e80eac3262e465f500 Mon Sep 17 00:00:00 2001 From: Jan-Willem Gmelig Meyling Date: Mon, 13 Jan 2020 10:08:24 +0100 Subject: [PATCH] Allow extension of AbstractQuery#createQuery Subclasses of `AbstractQuery` may override `createQuery()`, but not `createQuery(QueryModifiers, boolean)`. This leads to issues when subclasses want to adjust the rendering method. While overriding `createQuery` covers most use cases, some specific methods use `createQuery(QueryModifiers, boolean)` instead. As a result, one has to override `fetchCount`, `fetchResults`, `getResultList` , `fetchOne` and `getSingleResult` as well. As a proof of concept, see how I've extended `AbstractQuery` for it to execute queries on top of [Blaze-Persistence](https://github.com/Blazebit/blaze-persistence) Criteria Builder API in: https://github.com/jwgmeligmeyling/blaze-persistence-querydsl --- .../src/main/java/com/querydsl/jpa/impl/AbstractJPAQuery.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/querydsl-jpa/src/main/java/com/querydsl/jpa/impl/AbstractJPAQuery.java b/querydsl-jpa/src/main/java/com/querydsl/jpa/impl/AbstractJPAQuery.java index 0832e9fe6..bc1186fe3 100644 --- a/querydsl-jpa/src/main/java/com/querydsl/jpa/impl/AbstractJPAQuery.java +++ b/querydsl-jpa/src/main/java/com/querydsl/jpa/impl/AbstractJPAQuery.java @@ -94,7 +94,7 @@ public abstract class AbstractJPAQuery> exte return createQuery(getMetadata().getModifiers(), false); } - private Query createQuery(@Nullable QueryModifiers modifiers, boolean forCount) { + protected Query createQuery(@Nullable QueryModifiers modifiers, boolean forCount) { JPQLSerializer serializer = serialize(forCount); String queryString = serializer.toString(); logQuery(queryString, serializer.getConstantToLabel());