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 9f20fe6b2e
commit 8f70d2471e
2 changed files with 25 additions and 5 deletions

View File

@@ -30,10 +30,12 @@ import org.springframework.util.StringUtils;
/**
* A factory class for {@link StoredProcedureAttributes}.
*
*
* @author Thomas Darimont
* @author Oliver Gierke
* @author Christoph Strobl
* @author Mark Paluch
* @author Diego Diez
* @since 1.6
*/
enum StoredProcedureAttributeSource {
@@ -42,7 +44,7 @@ enum StoredProcedureAttributeSource {
/**
* Creates a new {@link StoredProcedureAttributes} from the given {@link Method} and {@link JpaEntityMetadata}.
*
*
* @param method must not be {@literal null}
* @param entityMetadata must not be {@literal null}
* @return
@@ -68,13 +70,13 @@ enum StoredProcedureAttributeSource {
+ method);
}
return new StoredProcedureAttributes(procedureName, null, method.getReturnType(), false);
return new StoredProcedureAttributes(procedureName, procedure.outputParameterName(), method.getReturnType(), false);
}
/**
* Tries to derive the procedure name from the given {@link Procedure}, falls back to the name of the given
* {@link Method}.
*
*
* @param method
* @param procedure
* @return

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}.
*/