Skip to content

Commit 09ff9df

Browse files
committed
HHH-17504 - Ongoing JPA 32 work HHH-17350 - Work on hibernate-models, XSD and JAXB HHH-16114 - Improve boot metamodel binding HHH-15996 - Develop an abstraction for Annotation in annotation processing HHH-16012 - Develop an abstraction for domain model Class refs HHH-15997 - Support for dynamic models in orm.xml HHH-15698 - Support for entity-name in mapping.xsd
1 parent 95e3536 commit 09ff9df

File tree

2 files changed

+31
-23
lines changed

2 files changed

+31
-23
lines changed

hibernate-core/src/main/java/org/hibernate/boot/model/internal/BasicValueBinder.java

Lines changed: 7 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -772,29 +772,13 @@ private void prepareCollectionElement(
772772
private void prepareBasicAttribute(
773773
String declaringClassName,
774774
MemberDetails attributeMember,
775-
TypeDetails attributeTypeDetails) {
776-
final Class<Object> javaTypeClass = attributeTypeDetails.determineRawClass().toJavaClass();
777-
775+
TypeDetails attributeType) {
776+
final Class<Object> javaTypeClass = attributeType.determineRawClass().toJavaClass();
778777
implicitJavaTypeAccess = ( typeConfiguration -> {
779-
final java.lang.reflect.Type attributeType = attributeTypeDetails.determineRawClass().toJavaClass();
780-
if ( attributeTypeDetails instanceof ParameterizedTypeDetails ) {
781-
final List<TypeDetails> arguments = attributeTypeDetails.asParameterizedType().getArguments();
782-
final int argumentsSize = arguments.size();
783-
final java.lang.reflect.Type[] argumentTypes = new java.lang.reflect.Type[argumentsSize];
784-
for ( int i = 0; i < argumentsSize; i++ ) {
785-
argumentTypes[i] = arguments.get( i ).determineRawClass().toJavaClass();
786-
}
787-
final TypeDetails owner = attributeTypeDetails.asParameterizedType().getOwner();
788-
final java.lang.reflect.Type ownerType;
789-
if ( owner != null ) {
790-
ownerType = owner.determineRawClass().toJavaClass();
791-
}
792-
else {
793-
ownerType = null;
794-
}
795-
return new ParameterizedTypeImpl( attributeType, argumentTypes, ownerType );
778+
if ( attributeType.getTypeKind() == TypeDetails.Kind.PARAMETERIZED_TYPE ) {
779+
return ParameterizedTypeImpl.from( attributeType.asParameterizedType() );
796780
}
797-
return attributeType;
781+
return attributeType.determineRawClass().toJavaClass();
798782
} );
799783

800784
//noinspection deprecation
@@ -817,7 +801,7 @@ private void prepareBasicAttribute(
817801
final AnnotationUsage<Enumerated> enumeratedAnn = attributeMember.getAnnotationUsage( Enumerated.class );
818802
if ( enumeratedAnn != null ) {
819803
this.enumType = enumeratedAnn.getEnum( "value" );
820-
if ( canUseEnumerated( attributeTypeDetails, javaTypeClass ) ) {
804+
if ( canUseEnumerated( attributeType, javaTypeClass ) ) {
821805
if ( this.enumType == null ) {
822806
throw new IllegalStateException(
823807
"jakarta.persistence.EnumType was null on @jakarta.persistence.Enumerated " +
@@ -831,7 +815,7 @@ private void prepareBasicAttribute(
831815
"Property '%s.%s' is annotated '@Enumerated' but its type '%s' is not an enum",
832816
declaringClassName,
833817
attributeMember.getName(),
834-
attributeTypeDetails.getName()
818+
attributeType.getName()
835819
)
836820
);
837821
}

hibernate-core/src/main/java/org/hibernate/type/internal/ParameterizedTypeImpl.java

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,13 @@
99
import java.lang.reflect.ParameterizedType;
1010
import java.lang.reflect.Type;
1111
import java.util.Arrays;
12+
import java.util.List;
1213
import java.util.Objects;
1314
import java.util.StringJoiner;
1415

16+
import org.hibernate.models.spi.ParameterizedTypeDetails;
17+
import org.hibernate.models.spi.TypeDetails;
18+
1519
public class ParameterizedTypeImpl implements ParameterizedType {
1620

1721
private final Type[] substTypeArgs;
@@ -24,6 +28,26 @@ public ParameterizedTypeImpl(Type rawType, Type[] substTypeArgs, Type ownerType)
2428
this.ownerType = ownerType;
2529
}
2630

31+
public static ParameterizedTypeImpl from(ParameterizedTypeDetails typeDetails) {
32+
final java.lang.reflect.Type attributeType = typeDetails.determineRawClass().toJavaClass();
33+
34+
final List<TypeDetails> arguments = typeDetails.asParameterizedType().getArguments();
35+
final int argumentsSize = arguments.size();
36+
final java.lang.reflect.Type[] argumentTypes = new java.lang.reflect.Type[argumentsSize];
37+
for ( int i = 0; i < argumentsSize; i++ ) {
38+
argumentTypes[i] = arguments.get( i ).determineRawClass().toJavaClass();
39+
}
40+
final TypeDetails owner = typeDetails.asParameterizedType().getOwner();
41+
final java.lang.reflect.Type ownerType;
42+
if ( owner != null ) {
43+
ownerType = owner.determineRawClass().toJavaClass();
44+
}
45+
else {
46+
ownerType = null;
47+
}
48+
return new ParameterizedTypeImpl( attributeType, argumentTypes, ownerType );
49+
}
50+
2751
public Type[] getActualTypeArguments() {
2852
return substTypeArgs;
2953
}

0 commit comments

Comments
 (0)