Skip to content

Commit 346395d

Browse files
authored
BAEL-8865 Pass a Null Parameter to a Stored Procedure (#18242)
* Update persistence.xml * Update pom.xml * Update pom.xml * Update StoredProcedureLiveTest.java * Update StoredProcedureLiveTest.java * Update StoredProcedureLiveTest.java * Update StoredProcedureLiveTest.java * Create StoredProcedureNullParamUnitTest.java * Update pom.xml * Update pom.xml * Update pom.xml * Update StoredProcedureNullParamUnitTest.java * Update pom.xml * Update pom.xml * Update StoredProcedureNullParamUnitTest.java * Update persistence.xml * Update persistence.xml * Update StoredProcedureNullParamUnitTest.java * Update StoredProcedureNullParamUnitTest.java * Update StoredProcedureNullParamUnitTest.java * Update StoredProcedureNullParamUnitTest.java * Update StoredProcedureLiveTest.java * Delete persistence-modules/java-jpa/src/test/java/com/baeldung/jpa/storedprocedure/StoredProcedureNullParamUnitTest.java
1 parent 1826580 commit 346395d

File tree

4 files changed

+46
-11
lines changed

4 files changed

+46
-11
lines changed

persistence-modules/java-jpa/pom.xml

+27-6
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,28 @@
1212
<version>1.0.0-SNAPSHOT</version>
1313
</parent>
1414

15+
<dependencyManagement>
16+
<dependencies>
17+
<dependency>
18+
<groupId>org.junit</groupId>
19+
<artifactId>junit-bom</artifactId>
20+
<version>5.11.1</version>
21+
<type>pom</type>
22+
<scope>import</scope>
23+
</dependency>
24+
25+
</dependencies>
26+
</dependencyManagement>
27+
28+
1529
<dependencies>
30+
<!-- https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter -->
31+
<dependency>
32+
<groupId>org.junit.jupiter</groupId>
33+
<artifactId>junit-jupiter</artifactId>
34+
<scope>test</scope>
35+
</dependency>
36+
1637
<dependency>
1738
<groupId>org.hibernate.orm</groupId>
1839
<artifactId>hibernate-core</artifactId>
@@ -65,9 +86,9 @@
6586
<version>${jakarta.xml.bind-api.version}</version>
6687
</dependency>
6788
<dependency>
68-
<groupId>javax.annotation</groupId>
69-
<artifactId>javax.annotation-api</artifactId>
70-
<version>${javax.annotation.version}</version>
89+
<groupId>jakarta.annotation</groupId>
90+
<artifactId>jakarta.annotation-api</artifactId>
91+
<version>${jakarta.annotation.version}</version>
7192
</dependency>
7293
<dependency>
7394
<groupId>com.mysql</groupId>
@@ -134,8 +155,8 @@
134155
<build-helper-maven-plugin.version>3.0.0</build-helper-maven-plugin.version>
135156
<h2.version>2.1.214</h2.version>
136157
<jakarta.xml.bind-api.version>4.0.0</jakarta.xml.bind-api.version>
137-
<javax.annotation.version>1.3.2</javax.annotation.version>
138-
<mysql.version>8.2.0</mysql.version>
158+
<jakarta.annotation.version>3.0.0</jakarta.annotation.version>
159+
<mysql.version>8.4.0</mysql.version>
139160
</properties>
140161

141-
</project>
162+
</project>

persistence-modules/java-jpa/src/main/resources/META-INF/persistence.xml

+2-1
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@
5151
<property name="jakarta.persistence.jdbc.password" value="YourPassword" />
5252
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect" />
5353
<property name="hibernate.show_sql" value="true" />
54+
<property name="hibernate.proc.param_null_passing" value="true" />
5455
</properties>
5556
</persistence-unit>
5657

@@ -107,4 +108,4 @@
107108
</properties>
108109
</persistence-unit>
109110

110-
</persistence>
111+
</persistence>

persistence-modules/java-jpa/src/test/java/com/baeldung/jpa/storedprocedure/StoredProcedureLiveTest.java

+16-4
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import org.junit.Before;
1313
import org.junit.BeforeClass;
1414
import org.junit.Test;
15+
import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
1516

1617
import com.baeldung.jpa.model.Car;
1718

@@ -51,18 +52,29 @@ public void findCarsByYearNamedProcedure() {
5152
final StoredProcedureQuery findByYearProcedure = entityManager.createNamedStoredProcedureQuery("findByYearProcedure");
5253
final StoredProcedureQuery storedProcedure = findByYearProcedure.setParameter("p_year", 2015);
5354
storedProcedure.getResultList()
54-
.forEach(c -> Assert.assertEquals(Integer.valueOf(2015), ((Car) c).getYear()));
55+
.forEach(c -> Assert.assertEquals(Integer.valueOf(2015), ((Car) c).getYear()));
5556
}
5657

5758
@Test
5859
public void findCarsByYearNoNamed() {
5960
final StoredProcedureQuery storedProcedure = entityManager.createStoredProcedureQuery("FIND_CAR_BY_YEAR", Car.class)
60-
.registerStoredProcedureParameter(1, Integer.class, ParameterMode.IN)
61-
.setParameter(1, 2015);
61+
.registerStoredProcedureParameter(1, Integer.class, ParameterMode.IN)
62+
.setParameter(1, 2015);
6263
storedProcedure.getResultList()
63-
.forEach(c -> Assert.assertEquals(Integer.valueOf(2015), ((Car) c).getYear()));
64+
.forEach(c -> Assert.assertEquals(Integer.valueOf(2015), ((Car) c).getYear()));
6465
}
6566

67+
68+
@org.junit.jupiter.api.Test
69+
public void givenStoredProc_whenNullParamPassed_thenNoExceptionThrown() {
70+
final StoredProcedureQuery storedProcedure = entityManager.createStoredProcedureQuery("FIND_CAR_BY_YEAR", Car.class)
71+
.registerStoredProcedureParameter(1, Integer.class, ParameterMode.IN);
72+
73+
assertDoesNotThrow(() -> {
74+
storedProcedure.setParameter(1, null);
75+
});
76+
}
77+
6678
@AfterClass
6779
public static void destroy() {
6880

persistence-modules/java-jpa/src/test/resources/persistence.xml

+1
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
<property name="jakarta.persistence.jdbc.password" value="YourPassword" />
1515
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect" />
1616
<property name="hibernate.show_sql" value="false" />
17+
<property name="hibernate.proc.param_null_passing" value="true" />
1718
</properties>
1819
</persistence-unit>
1920

0 commit comments

Comments
 (0)