From c6443850cb1ee7843daa22e34b8f0c3ff50dd2c2 Mon Sep 17 00:00:00 2001 From: Mark Paluch Date: Tue, 8 Dec 2020 14:18:44 +0100 Subject: [PATCH] DATAJPA-1827 - Polishing. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Use ClassUtils.isAssignable(…) to simplify boxed/primitive assignability checks. Original pull request: #438. --- .../data/jpa/repository/query/JpaQueryExecution.java | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/main/java/org/springframework/data/jpa/repository/query/JpaQueryExecution.java b/src/main/java/org/springframework/data/jpa/repository/query/JpaQueryExecution.java index d1997dc88..a10383108 100644 --- a/src/main/java/org/springframework/data/jpa/repository/query/JpaQueryExecution.java +++ b/src/main/java/org/springframework/data/jpa/repository/query/JpaQueryExecution.java @@ -97,7 +97,7 @@ public abstract class JpaQueryExecution { JpaQueryMethod queryMethod = query.getQueryMethod(); Class requiredType = queryMethod.getReturnType(); - if (void.class.equals(requiredType) || requiredType.isAssignableFrom(result.getClass())) { + if (ClassUtils.isAssignable(requiredType, void.class) || ClassUtils.isAssignableValue(requiredType, result)) { return result; } @@ -218,10 +218,11 @@ public abstract class JpaQueryExecution { Class returnType = method.getReturnType(); - boolean isVoid = void.class.equals(returnType) || Void.class.equals(returnType); - boolean isInt = int.class.equals(returnType) || Integer.class.equals(returnType); + boolean isVoid = ClassUtils.isAssignable(returnType, Void.class); + boolean isInt = ClassUtils.isAssignable(returnType, Integer.class); - Assert.isTrue(isInt || isVoid, "Modifying queries can only use void or int/Integer as return type!"); + Assert.isTrue(isInt || isVoid, + "Modifying queries can only use void or int/Integer as return type! Offending method: " + method); this.em = em; this.flush = method.getFlushAutomatically();