Skip to content

Commit d7dafbb

Browse files
committed
Polishing.
Co-locate Hibernate-specific parameters accessor as the same package as JPA parameters accessor. Remove Parameter Accessor reference from Persistence Provider since it's created in AbstractJpaQuery. Closes #3137 Original Pull Request: #3173
1 parent fb6d7a3 commit d7dafbb

File tree

8 files changed

+13
-24
lines changed

8 files changed

+13
-24
lines changed

spring-data-jpa/src/main/java/org/springframework/data/jpa/provider/PersistenceProvider.java

-11
Original file line numberDiff line numberDiff line change
@@ -106,12 +106,6 @@ public CloseableIterator<Object> executeQueryWithResultStream(Query jpaQuery) {
106106
return new HibernateScrollableResultsIterator(jpaQuery);
107107
}
108108

109-
@Override
110-
public JpaParametersParameterAccessor getParameterAccessor(JpaParameters parameters, Object[] values,
111-
EntityManager em) {
112-
return new HibernateJpaParametersParameterAccessor(parameters, values, em);
113-
}
114-
115109
@Override
116110
public String getCommentHintKey() {
117111
return "org.hibernate.comment";
@@ -292,11 +286,6 @@ public static PersistenceProvider fromMetamodel(Metamodel metamodel) {
292286
return cacheAndReturn(metamodelType, GENERIC_JPA);
293287
}
294288

295-
public JpaParametersParameterAccessor getParameterAccessor(JpaParameters parameters, Object[] values,
296-
EntityManager em) {
297-
return new JpaParametersParameterAccessor(parameters, values);
298-
}
299-
300289
/**
301290
* Returns the placeholder to be used for simple count queries. Default implementation returns {@code x}.
302291
*

spring-data-jpa/src/main/java/org/springframework/data/jpa/repository/query/AbstractJpaQuery.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@
3232
import java.util.stream.Collectors;
3333

3434
import org.springframework.core.convert.converter.Converter;
35-
import org.springframework.data.jpa.provider.HibernateJpaParametersParameterAccessor;
3635
import org.springframework.data.jpa.provider.PersistenceProvider;
3736
import org.springframework.data.jpa.repository.EntityGraph;
3837
import org.springframework.data.jpa.repository.query.JpaQueryExecution.CollectionExecution;
@@ -62,6 +61,7 @@
6261
* @author Jens Schauder
6362
* @author Сергей Цыпанов
6463
* @author Wonchul Heo
64+
* @author Julia Lee
6565
*/
6666
public abstract class AbstractJpaQuery implements RepositoryQuery {
6767

+4-4
Original file line numberDiff line numberDiff line change
@@ -13,15 +13,14 @@
1313
* See the License for the specific language governing permissions and
1414
* limitations under the License.
1515
*/
16-
package org.springframework.data.jpa.provider;
16+
package org.springframework.data.jpa.repository.query;
1717

1818
import jakarta.persistence.EntityManager;
1919

2020
import org.hibernate.engine.spi.SessionFactoryImplementor;
2121
import org.hibernate.query.TypedParameterValue;
2222
import org.hibernate.type.BasicType;
2323
import org.hibernate.type.BasicTypeRegistry;
24-
import org.springframework.data.jpa.repository.query.JpaParametersParameterAccessor;
2524
import org.springframework.data.repository.query.Parameter;
2625
import org.springframework.data.repository.query.Parameters;
2726
import org.springframework.data.repository.query.ParametersParameterAccessor;
@@ -38,9 +37,10 @@
3837
* @author Robert Wilson
3938
* @author Oliver Drotbohm
4039
* @author Greg Turnquist
40+
* @author Julia Lee
4141
* @since 2.7
4242
*/
43-
public class HibernateJpaParametersParameterAccessor extends JpaParametersParameterAccessor {
43+
class HibernateJpaParametersParameterAccessor extends JpaParametersParameterAccessor {
4444

4545
private final BasicTypeRegistry typeHelper;
4646

@@ -51,7 +51,7 @@ public class HibernateJpaParametersParameterAccessor extends JpaParametersParame
5151
* @param values must not be {@literal null}.
5252
* @param em must not be {@literal null}.
5353
*/
54-
public HibernateJpaParametersParameterAccessor(Parameters<?, ?> parameters, Object[] values, EntityManager em) {
54+
HibernateJpaParametersParameterAccessor(Parameters<?, ?> parameters, Object[] values, EntityManager em) {
5555

5656
super(parameters, values);
5757

spring-data-jpa/src/main/java/org/springframework/data/jpa/repository/query/ParameterMetadataProvider.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -233,10 +233,10 @@ public boolean isIsNullParameter() {
233233
/**
234234
* Prepares the object before it's actually bound to the {@link jakarta.persistence.Query;}.
235235
*
236-
* @param value the value to be prepared.
236+
* @param value can be {@literal null}.
237237
*/
238238
@Nullable
239-
public Object prepare(Object value) {
239+
public Object prepare(@Nullable Object value) {
240240

241241
if (value == null || expression.getJavaType() == null) {
242242
return value;

spring-data-jpa/src/test/java/org/springframework/data/jpa/repository/query/AbstractJpaQueryTests.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,6 @@
4040
import org.junit.jupiter.api.extension.ExtendWith;
4141
import org.mockito.ArgumentCaptor;
4242
import org.springframework.data.jpa.domain.sample.User;
43-
import org.springframework.data.jpa.provider.HibernateJpaParametersParameterAccessor;
4443
import org.springframework.data.jpa.provider.PersistenceProvider;
4544
import org.springframework.data.jpa.repository.EntityGraph;
4645
import org.springframework.data.jpa.repository.EntityGraph.EntityGraphType;
@@ -60,6 +59,7 @@
6059
* @author Thomas Darimont
6160
* @author Mark Paluch
6261
* @author Krzysztof Krason
62+
* @author Julia Lee
6363
*/
6464
@ExtendWith(SpringExtension.class)
6565
@ContextConfiguration("classpath:infrastructure.xml")
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package org.springframework.data.jpa.provider;
1+
package org.springframework.data.jpa.repository.query;
22

33
import jakarta.persistence.EntityManager;
44

@@ -8,6 +8,7 @@
88
import org.junit.jupiter.api.Test;
99
import org.junit.jupiter.api.extension.ExtendWith;
1010
import org.springframework.beans.factory.annotation.Autowired;
11+
import org.springframework.data.jpa.repository.query.HibernateJpaParametersParameterAccessor;
1112
import org.springframework.data.jpa.repository.query.JpaParameters;
1213
import org.springframework.test.context.ContextConfiguration;
1314
import org.springframework.test.context.junit.jupiter.SpringExtension;

spring-data-jpa/src/test/java/org/springframework/data/jpa/repository/query/JpaParametersParameterAccessorTests.java

+2-4
Original file line numberDiff line numberDiff line change
@@ -43,8 +43,7 @@ void createsJpaParametersParameterAccessor() throws Exception {
4343
Method withNativeQuery = SampleRepository.class.getMethod("withNativeQuery", Integer.class);
4444
Object[] values = { null };
4545
JpaParameters parameters = new JpaParameters(withNativeQuery);
46-
JpaParametersParameterAccessor accessor = PersistenceProvider.GENERIC_JPA.getParameterAccessor(parameters, values,
47-
em);
46+
JpaParametersParameterAccessor accessor = new JpaParametersParameterAccessor(parameters, values);
4847

4948
bind(parameters, accessor);
5049

@@ -57,8 +56,7 @@ void createsHibernateParametersParameterAccessor() throws Exception {
5756
Method withNativeQuery = SampleRepository.class.getMethod("withNativeQuery", Integer.class);
5857
Object[] values = { null };
5958
JpaParameters parameters = new JpaParameters(withNativeQuery);
60-
JpaParametersParameterAccessor accessor = PersistenceProvider.HIBERNATE.getParameterAccessor(parameters, values,
61-
em);
59+
JpaParametersParameterAccessor accessor = new HibernateJpaParametersParameterAccessor(parameters, values, em);
6260

6361
bind(parameters, accessor);
6462

spring-data-jpa/src/test/java/org/springframework/data/jpa/repository/query/QueryWithNullLikeIntegrationTests.java

+1
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@
5454
*
5555
* @author Greg Turnquist
5656
* @author Yuriy Tsarkov
57+
* @author Julia Lee
5758
*/
5859
@ExtendWith(SpringExtension.class)
5960
@ContextConfiguration(classes = QueryWithNullLikeIntegrationTests.Config.class)

0 commit comments

Comments
 (0)