@@ -749,22 +749,29 @@ public CommonQueryContract setParameter(String name, Object value) {
749749 }
750750 else {
751751 final QueryParameterBinding <Object > binding = getQueryParameterBindings ().getBinding ( name );
752- final QueryParameter <Object > param = binding .getQueryParameter ();
753- if ( param .allowsMultiValuedBinding () ) {
754- final BindableType <?> hibernateType = param .getHibernateType ();
755- if ( hibernateType == null || isInstance ( hibernateType , value ) ) {
756- if ( value instanceof Collection <?> collection
757- && !isRegisteredAsBasicType ( value .getClass () ) ) {
758- return setParameterList ( name , collection );
759- }
760- }
752+ if ( multipleBinding ( binding .getQueryParameter (), value )
753+ && value instanceof Collection <?> collectionValue
754+ && !isRegisteredAsBasicType ( value .getClass () ) ) {
755+ return setParameterList ( name , collectionValue );
761756 }
762757 binding .setBindValue ( value , resolveJdbcParameterTypeIfNecessary () );
763758 }
764759
765760 return this ;
766761 }
767762
763+ private boolean multipleBinding (QueryParameter <Object > param , Object value ){
764+ if ( param .allowsMultiValuedBinding () ) {
765+ final BindableType <?> hibernateType = param .getHibernateType ();
766+ if ( hibernateType == null
767+ || hibernateType instanceof NullSqmExpressible
768+ || isInstance ( hibernateType , value ) ) {
769+ return true ;
770+ }
771+ }
772+ return false ;
773+ }
774+
768775 private <T > void setTypedParameter (String name , TypedParameterValue <T > typedValue ) {
769776 final BindableType <T > type = typedValue .getType ();
770777 setParameter ( name , typedValue .getValue (), type != null ? type : typedValue .getTypeReference () );
@@ -815,17 +822,10 @@ public CommonQueryContract setParameter(int position, Object value) {
815822 }
816823 else {
817824 final QueryParameterBinding <Object > binding = getQueryParameterBindings ().getBinding ( position );
818- final QueryParameter <Object > param = binding .getQueryParameter ();
819- if ( param .allowsMultiValuedBinding () ) {
820- final BindableType <?> hibernateType = param .getHibernateType ();
821- if ( hibernateType == null
822- || hibernateType instanceof NullSqmExpressible
823- || isInstance ( hibernateType , value ) ) {
824- if ( value instanceof Collection <?> collection
825- && !isRegisteredAsBasicType ( value .getClass () ) ) {
826- return setParameterList ( position , collection );
827- }
828- }
825+ if ( multipleBinding ( binding .getQueryParameter (), value )
826+ && value instanceof Collection <?> collectionValue
827+ && !isRegisteredAsBasicType ( value .getClass () ) ) {
828+ return setParameterList ( position , collectionValue );
829829 }
830830 binding .setBindValue ( value , resolveJdbcParameterTypeIfNecessary () );
831831 }
0 commit comments