DATAJPA-1297 - Fixed usage of outputParameterName in @Procedure annotation.

Original pull request: #260.
This commit is contained in:
didiez
2018-03-22 09:19:49 +01:00
committed by Jens Schauder
parent 2f9d372c01
commit bf43e14fca
2 changed files with 21 additions and 2 deletions

View File

@@ -36,6 +36,7 @@ import org.springframework.util.StringUtils;
* @author Oliver Gierke
* @author Christoph Strobl
* @author Mark Paluch
* @author Diego Diez
* @since 1.6
*/
enum StoredProcedureAttributeSource {
@@ -70,7 +71,7 @@ enum StoredProcedureAttributeSource {
+ method);
}
return new StoredProcedureAttributes(procedureName, null, method.getReturnType(), false);
return new StoredProcedureAttributes(procedureName, procedure.outputParameterName(), method.getReturnType(), false);
}
/**

View File

@@ -42,6 +42,7 @@ import org.springframework.util.ReflectionUtils;
* @author Thomas Darimont
* @author Oliver Gierke
* @author Christoph Strobl
* @author Diego Diez
* @since 1.6
*/
@RunWith(MockitoJUnitRunner.class)
@@ -101,6 +102,17 @@ public class StoredProcedureAttributeSourceUnitTests {
assertThat(attr.getOutputParameterType(), is(typeCompatibleWith(Integer.class)));
assertThat(attr.getOutputParameterName(), is(StoredProcedureAttributes.SYNTHETIC_OUTPUT_PARAMETER_NAME));
}
@Test // DATAJPA-1297
public void shouldCreateStoredProcedureAttributesFromProcedureMethodWithExplictProcedureNameAliasAndOutputParameterName() {
StoredProcedureAttributes attr = creator
.createFrom(method("explicitPlus1inoutViaProcedureNameAliasAndOutputParameterName", Integer.class), entityMetadata);
assertThat(attr.getProcedureName(), is("plus1inout"));
assertThat(attr.getOutputParameterType(), is(typeCompatibleWith(Integer.class)));
assertThat(attr.getOutputParameterName(), is("res"));
}
@Test // DATAJPA-455
public void shouldCreateStoredProcedureAttributesFromProcedureMethodBackedWithExplicitlyNamedProcedure() {
@@ -166,12 +178,18 @@ public class StoredProcedureAttributeSourceUnitTests {
@Procedure(procedureName = "plus1inout") // DATAJPA-455
Integer explicitPlus1inoutViaProcedureNameAlias(Integer arg);
/**
* Explicitly mapped to a procedure with name "plus1inout" in database via alias and explicityly named ouput parameter.
*/
@Procedure(procedureName = "plus1inout", outputParameterName = "res") // DATAJPA-1297
Integer explicitPlus1inoutViaProcedureNameAliasAndOutputParameterName(Integer arg);
/**
* Implicitly mapped to a procedure with name "plus1inout" in database via alias.
*/
@Procedure // DATAJPA-455
Integer plus1inout(Integer arg);
/**
* Explicitly mapped to named stored procedure "User.plus1IO" in {@link EntityManager}.
*/