@@ -40,35 +40,34 @@ final class SimpleJpaQuery extends AbstractStringBasedJpaQuery {
40
40
*
41
41
* @param method must not be {@literal null}
42
42
* @param em must not be {@literal null}
43
- * @param countQueryString
43
+ * @param sourceQuery the original source query, must not be {@literal null} or empty.
44
44
* @param queryRewriter must not be {@literal null}
45
45
* @param valueExpressionDelegate must not be {@literal null}
46
46
*/
47
- public SimpleJpaQuery (JpaQueryMethod method , EntityManager em , @ Nullable String countQueryString ,
47
+ public SimpleJpaQuery (JpaQueryMethod method , EntityManager em , @ Nullable String sourceQuery ,
48
48
QueryRewriter queryRewriter , ValueExpressionDelegate valueExpressionDelegate ) {
49
- this (method , em , method .getRequiredAnnotatedQuery (), countQueryString , queryRewriter , valueExpressionDelegate );
49
+ this (method , em , method .getRequiredAnnotatedQuery (), sourceQuery , queryRewriter , valueExpressionDelegate );
50
50
}
51
51
52
52
/**
53
53
* Creates a new {@link SimpleJpaQuery} that encapsulates a simple query string.
54
54
*
55
55
* @param method must not be {@literal null}
56
56
* @param em must not be {@literal null}
57
- * @param queryString must not be {@literal null} or empty
57
+ * @param sourceQuery the original source query, must not be {@literal null} or empty
58
58
* @param countQueryString
59
59
* @param queryRewriter
60
60
* @param valueExpressionDelegate must not be {@literal null}
61
61
*/
62
- public SimpleJpaQuery (JpaQueryMethod method , EntityManager em , String queryString , @ Nullable String countQueryString , QueryRewriter queryRewriter ,
63
- ValueExpressionDelegate valueExpressionDelegate ) {
62
+ public SimpleJpaQuery (JpaQueryMethod method , EntityManager em , String sourceQuery , @ Nullable String countQueryString ,
63
+ QueryRewriter queryRewriter , ValueExpressionDelegate valueExpressionDelegate ) {
64
64
65
- super (method , em , queryString , countQueryString , queryRewriter , valueExpressionDelegate );
65
+ super (method , em , sourceQuery , countQueryString , queryRewriter , valueExpressionDelegate );
66
66
67
- validateQuery (getQuery (). getQueryString () , "Validation failed for query for method %s" , method );
67
+ validateQuery (getQuery (), "Validation failed for query %s for method %s" , method );
68
68
69
69
if (method .isPageQuery ()) {
70
- validateQuery (getCountQuery ().getQueryString (),
71
- String .format ("Count query validation failed for method %s" , method ));
70
+ validateQuery (getCountQuery (), "Count query %s validation failed for method %s" , method );
72
71
}
73
72
}
74
73
@@ -78,23 +77,24 @@ public SimpleJpaQuery(JpaQueryMethod method, EntityManager em, String queryStrin
78
77
* @param query
79
78
* @param errorMessage
80
79
*/
81
- private void validateQuery (String query , String errorMessage , Object ... arguments ) {
80
+ private void validateQuery (DeclaredQuery query , String errorMessage , JpaQueryMethod method ) {
82
81
83
82
if (getQueryMethod ().isProcedureQuery ()) {
84
83
return ;
85
84
}
86
85
87
86
EntityManager validatingEm = null ;
87
+ var queryString = query .getQueryString ();
88
88
89
89
try {
90
90
validatingEm = getEntityManager ().getEntityManagerFactory ().createEntityManager ();
91
- validatingEm .createQuery (query );
91
+ validatingEm .createQuery (queryString );
92
92
93
93
} catch (RuntimeException e ) {
94
94
95
95
// Needed as there's ambiguities in how an invalid query string shall be expressed by the persistence provider
96
- // https://java.net/projects /jpa-spec/lists/jsr338-experts/archive/ 2012- 07/message/17
97
- throw new IllegalArgumentException (String . format ( errorMessage , arguments ), e );
96
+ // https://download.oracle.com/javaee-archive /jpa-spec.java.net/users/ 2012/ 07/0404.html
97
+ throw new IllegalArgumentException (errorMessage . formatted ( query , method ), e );
98
98
99
99
} finally {
100
100
0 commit comments