Skip to content

Commit b35c783

Browse files
msfmmbellade
authored andcommitted
HHH-17151 Add test for issue
1 parent bd2be3f commit b35c783

File tree

1 file changed

+57
-6
lines changed

1 file changed

+57
-6
lines changed

hibernate-core/src/test/java/org/hibernate/orm/test/jpa/query/DateTimeParameterTest.java

Lines changed: 57 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,16 @@
1010
import jakarta.persistence.Entity;
1111
import jakarta.persistence.EntityManager;
1212
import jakarta.persistence.Id;
13+
import jakarta.persistence.Parameter;
1314
import jakarta.persistence.Query;
1415
import jakarta.persistence.Table;
1516
import jakarta.persistence.Temporal;
1617
import jakarta.persistence.TemporalType;
1718

1819
import org.hibernate.orm.test.jpa.BaseEntityManagerFunctionalTestCase;
1920

21+
import org.junit.After;
22+
import org.junit.Before;
2023
import org.junit.Test;
2124

2225
import static org.junit.Assert.assertEquals;
@@ -35,8 +38,6 @@ protected Class<?>[] getAnnotatedClasses() {
3538

3639
@Test
3740
public void testBindingCalendarAsDate() {
38-
createTestData();
39-
4041
EntityManager em = getOrCreateEntityManager();
4142
em.getTransaction().begin();
4243

@@ -50,8 +51,6 @@ public void testBindingCalendarAsDate() {
5051
em.getTransaction().rollback();
5152
em.close();
5253
}
53-
54-
deleteTestData();
5554
}
5655

5756
@Test
@@ -71,15 +70,67 @@ public void testBindingNulls() {
7170
}
7271
}
7372

74-
private void createTestData() {
73+
74+
@Test
75+
public void testBindingNullNativeQueryPositional() {
76+
EntityManager em = getOrCreateEntityManager();
77+
em.getTransaction().begin();
78+
79+
try {
80+
final Query query = em.createNativeQuery( "update Thing set someDate = ?1 where id = 1" );
81+
//noinspection deprecation
82+
query.setParameter( 1, (Date) null, TemporalType.DATE );
83+
assertEquals( 1, query.executeUpdate() );
84+
}
85+
finally {
86+
em.getTransaction().rollback();
87+
em.close();
88+
}
89+
}
90+
91+
@Test
92+
public void testBindingNullNativeQueryNamed() {
93+
EntityManager em = getOrCreateEntityManager();
94+
em.getTransaction().begin();
95+
try {
96+
final Query query = em.createNativeQuery( "update Thing set someDate = :me where id = 1" );
97+
Parameter<Date> p = new Parameter<>() {
98+
@Override
99+
public String getName() {
100+
return "me";
101+
}
102+
103+
@Override
104+
public Integer getPosition() {
105+
return null;
106+
}
107+
108+
@Override
109+
public Class<Date> getParameterType() {
110+
return Date.class;
111+
}
112+
};
113+
//noinspection deprecation
114+
query.setParameter( p, null, TemporalType.DATE );
115+
assertEquals( 1, query.executeUpdate() );
116+
}
117+
finally {
118+
em.getTransaction().rollback();
119+
em.close();
120+
}
121+
}
122+
123+
@Before
124+
public void createTestData() {
75125
EntityManager em = getOrCreateEntityManager();
76126
em.getTransaction().begin();
77127
em.persist( new Thing( 1, "test", now, now, now ) );
78128
em.getTransaction().commit();
79129
em.close();
80130
}
81131

82-
private void deleteTestData() {
132+
@After
133+
public void deleteTestData() {
83134
EntityManager em = getOrCreateEntityManager();
84135
em.getTransaction().begin();
85136
em.createQuery( "delete Thing" ).executeUpdate();

0 commit comments

Comments
 (0)