HHH-8068 Suggestion for improvement.
This commit is contained in:
parent
9ee5392456
commit
d0a7a017a5
|
@ -39,6 +39,7 @@ import org.hibernate.internal.util.StringHelper;
|
||||||
import org.hibernate.transform.AliasToBeanConstructorResultTransformer;
|
import org.hibernate.transform.AliasToBeanConstructorResultTransformer;
|
||||||
import org.hibernate.transform.ResultTransformer;
|
import org.hibernate.transform.ResultTransformer;
|
||||||
import org.hibernate.transform.Transformers;
|
import org.hibernate.transform.Transformers;
|
||||||
|
import org.hibernate.type.PrimitiveType;
|
||||||
import org.hibernate.type.Type;
|
import org.hibernate.type.Type;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -184,10 +185,23 @@ public class ConstructorNode extends SelectExpressionList implements AggregatedS
|
||||||
catch ( PropertyNotFoundException e ) {
|
catch ( PropertyNotFoundException e ) {
|
||||||
// this is the exception returned by ReflectHelper.getConstructor() if it cannot
|
// this is the exception returned by ReflectHelper.getConstructor() if it cannot
|
||||||
// locate an appropriate constructor
|
// locate an appropriate constructor
|
||||||
throw new DetailedSemanticException( "Unable to locate appropriate constructor on class [" + className + "]", e );
|
String formattedMessage = formatMissingContructorExceptionMessage(className);
|
||||||
|
throw new DetailedSemanticException( formattedMessage, e );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private String formatMissingContructorExceptionMessage(String className) {
|
||||||
|
String[] params = new String[constructorArgumentTypes.length];
|
||||||
|
for ( int j = 0; j < constructorArgumentTypes.length; j++ ) {
|
||||||
|
params[j] = constructorArgumentTypes[j] instanceof PrimitiveType ?
|
||||||
|
( ( PrimitiveType ) constructorArgumentTypes[j] ).getPrimitiveClass().getName() :
|
||||||
|
constructorArgumentTypes[j].getReturnedClass().getName();
|
||||||
|
}
|
||||||
|
String formattedList = params.length == 0 ? "no arguments constructor" : StringHelper.join(", ", params);
|
||||||
|
return String.format( "Unable to locate appropriate constructor on class [%s]. Expected types are: %s",
|
||||||
|
className, formattedList );
|
||||||
|
}
|
||||||
|
|
||||||
public Constructor getConstructor() {
|
public Constructor getConstructor() {
|
||||||
return constructor;
|
return constructor;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue