From 7b3f250aebba818b3ae3105f58293131bfa8ea09 Mon Sep 17 00:00:00 2001 From: Jens Schauder Date: Tue, 18 Jun 2019 08:49:35 +0200 Subject: [PATCH] DATAJPA-1560 - Avoid unnecessary creation of exceptions when checking if a type is managed. We check a type is managed before trying to access its `ManagedType`. Original pull request: #384. --- .../support/JpaMetamodelEntityInformation.java | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/main/java/org/springframework/data/jpa/repository/support/JpaMetamodelEntityInformation.java b/src/main/java/org/springframework/data/jpa/repository/support/JpaMetamodelEntityInformation.java index 7c80c211a..8a6e3911d 100644 --- a/src/main/java/org/springframework/data/jpa/repository/support/JpaMetamodelEntityInformation.java +++ b/src/main/java/org/springframework/data/jpa/repository/support/JpaMetamodelEntityInformation.java @@ -412,13 +412,17 @@ public class JpaMetamodelEntityInformation extends JpaEntityInformationSu return false; } - try { - ManagedType managedType = this.metamodel.managedType(ProxyUtils.getUserClass(value)); - return managedType != null && managedType.getPersistenceType() == PersistenceType.ENTITY; - } catch (IllegalArgumentException iae) { - // no mapped type + Class userClass = ProxyUtils.getUserClass(value); + + if (!this.jpaMetamodel.isJpaManaged(userClass)) { return false; } + + ManagedType managedType = this.metamodel.managedType(userClass); + + Assert.state(managedType != null, "ManagedType must not be null. We checked that it exists before."); + + return managedType.getPersistenceType() == PersistenceType.ENTITY; } } }