44 */
55package org .hibernate .metamodel .internal ;
66
7- import java .util .ArrayList ;
8- import java .util .HashMap ;
9- import java .util .HashSet ;
10- import java .util .List ;
11- import java .util .Map ;
12- import java .util .Set ;
13- import java .util .function .BiFunction ;
14-
7+ import jakarta .persistence .metamodel .Attribute ;
8+ import jakarta .persistence .metamodel .IdentifiableType ;
9+ import jakarta .persistence .metamodel .SingularAttribute ;
10+ import jakarta .persistence .metamodel .Type ;
1511import org .hibernate .AssertionFailure ;
1612import org .hibernate .Internal ;
1713import org .hibernate .MappingException ;
5046import org .hibernate .type .descriptor .jdbc .JdbcType ;
5147import org .hibernate .type .spi .TypeConfiguration ;
5248
53- import jakarta .persistence .metamodel .Attribute ;
54- import jakarta .persistence .metamodel .IdentifiableType ;
55- import jakarta .persistence .metamodel .SingularAttribute ;
56- import jakarta .persistence .metamodel .Type ;
49+ import java .util .ArrayList ;
50+ import java .util .HashMap ;
51+ import java .util .HashSet ;
52+ import java .util .List ;
53+ import java .util .Map ;
54+ import java .util .Set ;
55+ import java .util .function .BiFunction ;
5756
5857import static java .util .Collections .unmodifiableMap ;
5958import static org .hibernate .metamodel .internal .InjectionHelper .injectField ;
@@ -809,10 +808,8 @@ public void popEntityWorkedOn(PersistentClass persistentClass) {
809808 stackOfPersistentClassesBeingProcessed .size () - 1
810809 );
811810 if ( stackTop != persistentClass ) {
812- throw new AssertionFailure (
813- "Inconsistent popping: "
814- + persistentClass .getEntityName () + " instead of " + stackTop .getEntityName ()
815- );
811+ throw new AssertionFailure ( "Inconsistent popping: "
812+ + persistentClass .getEntityName () + " instead of " + stackTop .getEntityName () );
816813 }
817814 }
818815
@@ -833,20 +830,25 @@ public Set<MappedSuperclass> getUnusedMappedSuperclasses() {
833830 private final Map <Class <?>,BasicDomainType <?>> basicDomainTypeMap = new HashMap <>();
834831
835832 public <J > BasicDomainType <J > resolveBasicType (Class <J > javaType ) {
836- //noinspection unchecked
837- return (BasicDomainType <J >) basicDomainTypeMap .computeIfAbsent (
838- javaType ,
839- jt -> {
840- // we cannot use getTypeConfiguration().standardBasicTypeForJavaType(javaType)
841- // because that doesn't return the right thing for primitive types
842- final JavaTypeRegistry registry = getTypeConfiguration ().getJavaTypeRegistry ();
843- JavaType <J > javaTypeDescriptor = registry .resolveDescriptor ( javaType );
844- JdbcType jdbcType = javaTypeDescriptor .getRecommendedJdbcType ( typeConfiguration .getCurrentBaseSqlTypeIndicators () );
845- return javaType .isPrimitive ()
846- ? new PrimitiveBasicTypeImpl <>( javaTypeDescriptor , jdbcType , javaType )
833+ @ SuppressWarnings ("unchecked" )
834+ final BasicDomainType <J > domainType = (BasicDomainType <J >) basicDomainTypeMap .get ( javaType );
835+ if ( domainType == null ) {
836+ // we cannot use getTypeConfiguration().standardBasicTypeForJavaType(javaType)
837+ // because that doesn't return the right thing for primitive types
838+ final JavaType <J > javaTypeDescriptor =
839+ getTypeConfiguration ().getJavaTypeRegistry ().resolveDescriptor ( javaType );
840+ final JdbcType jdbcType =
841+ javaTypeDescriptor .getRecommendedJdbcType ( typeConfiguration .getCurrentBaseSqlTypeIndicators () );
842+ final BasicDomainType <J > type =
843+ javaType .isPrimitive ()
844+ ? new PrimitiveBasicTypeImpl <>( javaTypeDescriptor , jdbcType , javaType )
847845 : new BasicTypeImpl <>( javaTypeDescriptor , jdbcType );
848- }
849- );
846+ basicDomainTypeMap .put ( javaType , type );
847+ return type ;
848+ }
849+ else {
850+ return domainType ;
851+ }
850852 }
851853
852854 public <J > EmbeddableDomainType <J > locateEmbeddable (Class <J > embeddableClass , Component component ) {
0 commit comments