HHH-17041 Embeddable and Generics throws IllegalArgumentException

This commit is contained in:
Andrea Boriero 2023-08-08 17:16:36 +02:00 committed by Andrea Boriero
parent 005e28113e
commit deabfa0e47
2 changed files with 13 additions and 9 deletions

View File

@ -363,14 +363,19 @@ public class ClassPropertyHolder extends AbstractPropertyHolder {
actualProperty.setValue( context.getMetadataCollector().getGenericComponent( componentClass ) );
}
else {
final Iterator<Property> propertyIterator = component.getPropertyIterator();
while ( propertyIterator.hasNext() ) {
Property property = propertyIterator.next();
try {
property.getGetter( componentClass );
}
catch (PropertyNotFoundException e) {
propertyIterator.remove();
if ( componentClass == Object.class ) {
// Object is not a valid component class, but that is what we get when using a type variable
component.getProperties().clear();
}
else {
final Iterator<Property> propertyIterator = component.getPropertyIterator();
while ( propertyIterator.hasNext() ) {
try {
propertyIterator.next().getGetter( componentClass );
}
catch (PropertyNotFoundException e) {
propertyIterator.remove();
}
}
}
}

View File

@ -32,7 +32,6 @@ import org.hibernate.property.access.internal.PropertyAccessStrategyIndexBackRef
import org.hibernate.property.access.spi.BuiltInPropertyAccessStrategies;
import org.hibernate.property.access.spi.PropertyAccess;
import org.hibernate.property.access.spi.PropertyAccessStrategy;
import org.hibernate.service.ServiceRegistry;
import org.hibernate.type.descriptor.java.JavaType;
import org.hibernate.type.descriptor.java.spi.JavaTypeRegistry;
import org.hibernate.type.internal.CompositeUserTypeJavaTypeWrapper;