3535import org .hibernate .query .QueryFlushMode ;
3636import org .hibernate .query .QueryParameter ;
3737import org .hibernate .query .TypedParameterValue ;
38- import org .hibernate .query .QueryArgumentTypeException ;
3938import org .hibernate .query .criteria .JpaExpression ;
4039import org .hibernate .query .internal .QueryOptionsImpl ;
4140import org .hibernate .query .sqm .NodeBuilder ;
@@ -643,10 +642,9 @@ public <T> QueryParameterImplementor<T> getParameter(String name, Class<T> type)
643642 try {
644643 final var parameter = getParameterMetadata ().getQueryParameter ( name );
645644 if ( !type .isAssignableFrom ( parameter .getParameterType () ) ) {
646- throw new QueryArgumentTypeException (
647- "Type specified for parameter named '" + name + "' is incompatible" ,
648- parameter .getParameterType (),
649- type
645+ throw new IllegalArgumentException (
646+ "Type specified for parameter named '" + name + "' is incompatible"
647+ + " (" + parameter .getParameterType ().getName () + " is not assignable to " + type .getName () + ")"
650648 );
651649 }
652650 @ SuppressWarnings ("unchecked" ) // safe, just checked
@@ -673,10 +671,9 @@ public <T> QueryParameterImplementor<T> getParameter(int position, Class<T> type
673671 try {
674672 final var parameter = getParameterMetadata ().getQueryParameter ( position );
675673 if ( !type .isAssignableFrom ( parameter .getParameterType () ) ) {
676- throw new QueryArgumentTypeException (
677- "Type specified for parameter at position " + position + " is incompatible" ,
678- parameter .getParameterType (),
679- type
674+ throw new IllegalArgumentException (
675+ "Type specified for parameter at position " + position + " is incompatible"
676+ + " (" + parameter .getParameterType ().getName () + " is not assignable to " + type .getName () + ")"
680677 );
681678 }
682679 @ SuppressWarnings ("unchecked" ) // safe, just checked
@@ -746,9 +743,9 @@ protected <P> QueryParameterBinding<P> locateBinding(String name, Class<P> javaT
746743 final var parameterJavaType = parameterType .getJavaType ();
747744 if ( !parameterJavaType .isAssignableFrom ( javaType )
748745 && !isInstance ( parameterType , value ) ) {
749- throw new QueryArgumentTypeException (
746+ throw new QueryArgumentException (
750747 "Argument to parameter named '" + name + "' has an incompatible type" ,
751- parameterJavaType , javaType );
748+ parameterJavaType , javaType , value );
752749 }
753750 }
754751 @ SuppressWarnings ("unchecked" ) // safe, just checked
@@ -764,9 +761,9 @@ protected <P> QueryParameterBinding<P> locateBinding(int position, Class<P> java
764761 final var parameterJavaType = parameterType .getJavaType ();
765762 if ( !parameterJavaType .isAssignableFrom ( javaType )
766763 && !isInstance ( parameterType , value ) ) {
767- throw new QueryArgumentTypeException (
764+ throw new QueryArgumentException (
768765 "Argument to parameter at position " + position + " has an incompatible type" ,
769- parameterJavaType , javaType );
766+ parameterJavaType , javaType , value );
770767 }
771768 }
772769 @ SuppressWarnings ("unchecked" ) // safe, just checked
@@ -782,9 +779,9 @@ protected <P> QueryParameterBinding<P> locateBinding(String name, Class<P> javaT
782779 final var parameterJavaType = parameterType .getJavaType ();
783780 if ( !parameterJavaType .isAssignableFrom ( javaType )
784781 && !areInstances ( parameterType , values ) ) {
785- throw new QueryArgumentTypeException (
782+ throw new QueryArgumentException (
786783 "Argument to parameter named '" + name + "' has an incompatible type" ,
787- parameterJavaType , javaType );
784+ parameterJavaType , javaType , values );
788785 }
789786 }
790787 @ SuppressWarnings ("unchecked" ) // safe, just checked
@@ -800,9 +797,9 @@ protected <P> QueryParameterBinding<P> locateBinding(int position, Class<P> java
800797 final var parameterJavaType = parameterType .getJavaType ();
801798 if ( !parameterJavaType .isAssignableFrom ( javaType )
802799 && !areInstances ( parameterType , values ) ) {
803- throw new QueryArgumentTypeException (
800+ throw new QueryArgumentException (
804801 "Argument to parameter at position " + position + " has an incompatible type" ,
805- parameterJavaType , javaType );
802+ parameterJavaType , javaType , values );
806803 }
807804 }
808805 @ SuppressWarnings ("unchecked" ) // safe, just checked
@@ -865,8 +862,8 @@ private <P> void setParameterValue(Object value, QueryParameterBinding<P> bindin
865862 final var parameterType = binding .getBindType ();
866863 if ( parameterType != null
867864 && !isInstanceOrAreInstances ( value , binding , parameterType ) ) {
868- throw new QueryArgumentTypeException ( "Argument to query parameter has an incompatible type" ,
869- parameterType .getJavaType (), value .getClass () );
865+ throw new QueryArgumentException ( "Argument to query parameter has an incompatible type" ,
866+ parameterType .getJavaType (), value .getClass (), value );
870867 }
871868 @ SuppressWarnings ("unchecked" ) // safe, just checked
872869 final var castValue = (P ) value ;
@@ -1187,8 +1184,8 @@ private <P> void setParameterValues(Object[] values, QueryParameterBinding<P> bi
11871184 final var parameterType = binding .getBindType ();
11881185 if ( parameterType != null
11891186 && !areInstances ( values , parameterType ) ) {
1190- throw new QueryArgumentTypeException ( "Argument to query parameter has an incompatible type" ,
1191- parameterType .getJavaType (), values .getClass ().getComponentType () );
1187+ throw new QueryArgumentException ( "Argument to query parameter has an incompatible type" ,
1188+ parameterType .getJavaType (), values .getClass ().getComponentType (), values );
11921189 }
11931190 @ SuppressWarnings ("unchecked" ) // safe, just checked
11941191 final var castArray = (P []) values ;
0 commit comments