Skip to content

Commit bf43e14

Browse files
didiezschauder
authored andcommitted
DATAJPA-1297 - Fixed usage of outputParameterName in @procedure annotation.
Original pull request: #260.
1 parent 2f9d372 commit bf43e14

File tree

2 files changed

+21
-2
lines changed

2 files changed

+21
-2
lines changed

src/main/java/org/springframework/data/jpa/repository/query/StoredProcedureAttributeSource.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
* @author Oliver Gierke
3737
* @author Christoph Strobl
3838
* @author Mark Paluch
39+
* @author Diego Diez
3940
* @since 1.6
4041
*/
4142
enum StoredProcedureAttributeSource {
@@ -70,7 +71,7 @@ public StoredProcedureAttributes createFrom(Method method, JpaEntityMetadata<?>
7071
+ method);
7172
}
7273

73-
return new StoredProcedureAttributes(procedureName, null, method.getReturnType(), false);
74+
return new StoredProcedureAttributes(procedureName, procedure.outputParameterName(), method.getReturnType(), false);
7475
}
7576

7677
/**

src/test/java/org/springframework/data/jpa/repository/query/StoredProcedureAttributeSourceUnitTests.java

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@
4242
* @author Thomas Darimont
4343
* @author Oliver Gierke
4444
* @author Christoph Strobl
45+
* @author Diego Diez
4546
* @since 1.6
4647
*/
4748
@RunWith(MockitoJUnitRunner.class)
@@ -101,6 +102,17 @@ public void shouldCreateStoredProcedureAttributesFromProcedureMethodWithExplictP
101102
assertThat(attr.getOutputParameterType(), is(typeCompatibleWith(Integer.class)));
102103
assertThat(attr.getOutputParameterName(), is(StoredProcedureAttributes.SYNTHETIC_OUTPUT_PARAMETER_NAME));
103104
}
105+
106+
@Test // DATAJPA-1297
107+
public void shouldCreateStoredProcedureAttributesFromProcedureMethodWithExplictProcedureNameAliasAndOutputParameterName() {
108+
109+
StoredProcedureAttributes attr = creator
110+
.createFrom(method("explicitPlus1inoutViaProcedureNameAliasAndOutputParameterName", Integer.class), entityMetadata);
111+
112+
assertThat(attr.getProcedureName(), is("plus1inout"));
113+
assertThat(attr.getOutputParameterType(), is(typeCompatibleWith(Integer.class)));
114+
assertThat(attr.getOutputParameterName(), is("res"));
115+
}
104116

105117
@Test // DATAJPA-455
106118
public void shouldCreateStoredProcedureAttributesFromProcedureMethodBackedWithExplicitlyNamedProcedure() {
@@ -166,12 +178,18 @@ static interface DummyRepository {
166178
@Procedure(procedureName = "plus1inout") // DATAJPA-455
167179
Integer explicitPlus1inoutViaProcedureNameAlias(Integer arg);
168180

181+
/**
182+
* Explicitly mapped to a procedure with name "plus1inout" in database via alias and explicityly named ouput parameter.
183+
*/
184+
@Procedure(procedureName = "plus1inout", outputParameterName = "res") // DATAJPA-1297
185+
Integer explicitPlus1inoutViaProcedureNameAliasAndOutputParameterName(Integer arg);
186+
169187
/**
170188
* Implicitly mapped to a procedure with name "plus1inout" in database via alias.
171189
*/
172190
@Procedure // DATAJPA-455
173191
Integer plus1inout(Integer arg);
174-
192+
175193
/**
176194
* Explicitly mapped to named stored procedure "User.plus1IO" in {@link EntityManager}.
177195
*/

0 commit comments

Comments
 (0)