40
40
import java .lang .annotation .Annotation ;
41
41
import java .lang .reflect .AnnotatedElement ;
42
42
import java .lang .reflect .Member ;
43
- import java .util .ArrayList ;
44
- import java .util .Collections ;
45
- import java .util .HashMap ;
46
- import java .util .HashSet ;
47
- import java .util .Iterator ;
48
- import java .util .List ;
49
- import java .util .Locale ;
50
- import java .util .Map ;
51
- import java .util .Objects ;
52
- import java .util .Set ;
43
+ import java .util .*;
53
44
import java .util .regex .Matcher ;
54
45
import java .util .regex .Pattern ;
55
46
import java .util .stream .Collectors ;
@@ -292,9 +283,8 @@ public static String applySorting(String query, Sort sort, @Nullable String alia
292
283
Set <String > selectionAliases = getFunctionAliases (query );
293
284
selectionAliases .addAll (getFieldAliases (query ));
294
285
295
- String orderClauses = sort .stream ()
296
- .map (order -> getOrderClause (joinAliases , selectionAliases , alias , order ))
297
- .collect (Collectors .joining (", " ));
286
+ String orderClauses = sort .stream ().map (order -> getOrderClause (joinAliases , selectionAliases , alias , order ))
287
+ .collect (Collectors .joining (", " ));
298
288
299
289
builder .append (orderClauses );
300
290
@@ -532,7 +522,6 @@ private static Integer findClose(final Integer open, final List<Integer> closes,
532
522
* @param entityManager must not be {@literal null}.
533
523
* @return Guaranteed to be not {@literal null}.
534
524
*/
535
-
536
525
public static <T > Query applyAndBind (String queryString , Iterable <T > entities , EntityManager entityManager ) {
537
526
538
527
Assert .notNull (queryString , "Querystring must not be null" );
@@ -546,30 +535,8 @@ public static <T> Query applyAndBind(String queryString, Iterable<T> entities, E
546
535
}
547
536
548
537
String alias = detectAlias (queryString );
549
- StringBuilder builder = new StringBuilder (queryString );
550
- builder .append (" where" );
551
-
552
- int i = 0 ;
553
-
554
- while (iterator .hasNext ()) {
555
-
556
- iterator .next ();
557
-
558
- builder .append (String .format (" %s = ?%d" , alias , ++i ));
559
-
560
- if (iterator .hasNext ()) {
561
- builder .append (" or" );
562
- }
563
- }
564
-
565
- Query query = entityManager .createQuery (builder .toString ());
566
-
567
- iterator = entities .iterator ();
568
- i = 0 ;
569
-
570
- while (iterator .hasNext ()) {
571
- query .setParameter (++i , iterator .next ());
572
- }
538
+ Query query = entityManager .createQuery ("%s where %s IN (?1)" .formatted (queryString , alias ));
539
+ query .setParameter (1 , entities instanceof Collection <T > ? entities : Streamable .of (entities ).toList ());
573
540
574
541
return query ;
575
542
}
0 commit comments