4747import org .springframework .data .repository .query .parser .Part ;
4848import org .springframework .data .support .PageableExecutionUtils ;
4949import org .springframework .data .util .Pair ;
50+ import org .springframework .data .util .ReflectionUtils ;
5051import org .springframework .javapoet .CodeBlock ;
5152import org .springframework .javapoet .CodeBlock .Builder ;
5253import org .springframework .javapoet .TypeName ;
@@ -591,8 +592,7 @@ public CodeBlock build() {
591592 String resultSetExtractor = null ;
592593
593594 if (rowMapperClass != null ) {
594- builder .addStatement ("$T $L = new $T()" , RowMapper .class , rowMapper ,
595- rowMapperClass );
595+ builder .addStatement ("$T $L = new $T()" , RowMapper .class , rowMapper , rowMapperClass );
596596 } else if (StringUtils .hasText (rowMapperRef )) {
597597 builder .addStatement ("$T $L = getRowMapperFactory().getRowMapper($S)" , RowMapper .class , rowMapper ,
598598 rowMapperRef );
@@ -697,24 +697,23 @@ private CodeBlock update(Builder builder, Class<?> returnType) {
697697
698698 String result = context .localVariable ("result" );
699699
700- if (returnType == Void .TYPE || returnType == Void .class ) {
701-
702- builder .addStatement ("getJdbcOperations().update($L, $L)" , queryVariableName , parameterSourceVariableName );
703-
704- if (returnType == Void .class ) {
705- builder .addStatement ("return null" );
706- }
700+ builder .add ("$[" );
707701
708- return builder .build ();
702+ if (!ReflectionUtils .isVoid (returnType )) {
703+ builder .add ("int $L = " , result );
709704 }
710705
711- builder .addStatement ( "int $L = getJdbcOperations().update($L, $L)" , result , queryVariableName ,
712- parameterSourceVariableName );
706+ builder .add ( " getJdbcOperations().update($L, $L)" , queryVariableName , parameterSourceVariableName );
707+ builder . add ( "; \n $]" );
713708
714709 if (returnType == boolean .class || returnType == Boolean .class ) {
715710 builder .addStatement ("return $L != 0" , result );
716711 } else if (returnType == Long .class ) {
717712 builder .addStatement ("return (long) $L" , result );
713+ } else if (ReflectionUtils .isVoid (returnType )) {
714+ if (returnType == Void .class ) {
715+ builder .addStatement ("return null" );
716+ }
718717 } else {
719718 builder .addStatement ("return $L" , result );
720719 }
@@ -728,8 +727,8 @@ private CodeBlock delete(Builder builder, String rowMapper, String result, TypeN
728727 builder .addStatement ("$T $L = getRowMapperFactory().create($T.class)" , RowMapper .class , rowMapper ,
729728 context .getRepositoryInformation ().getDomainType ());
730729
731- builder .addStatement ("$T $L = ($T ) getJdbcOperations().query($L , $L , new $T <>($L ))" , List .class , result ,
732- List . class , queryVariableName , parameterSourceVariableName , RowMapperResultSetExtractor .class , rowMapper );
730+ builder .addStatement ("$1T $2L = ($1T ) getJdbcOperations().query($3L , $4L , new $5T <>($6L ))" , List .class , result ,
731+ queryVariableName , parameterSourceVariableName , RowMapperResultSetExtractor .class , rowMapper );
733732
734733 builder .addStatement ("$L.forEach(getOperations()::delete)" , result );
735734
@@ -742,6 +741,10 @@ private CodeBlock delete(Builder builder, String rowMapper, String result, TypeN
742741 builder .addStatement ("return !$L.isEmpty()" , result );
743742 } else if (returnType == Long .class ) {
744743 builder .addStatement ("return (long) $L.size()" , result );
744+ } else if (ReflectionUtils .isVoid (returnType )) {
745+ if (returnType == Void .class ) {
746+ builder .addStatement ("return null" );
747+ }
745748 } else {
746749 builder .addStatement ("return $L.size()" , result );
747750 }
0 commit comments