@@ -384,10 +384,11 @@ protected Predicate getArgumentPredicate(CriteriaBuilder cb, From<?,?> path,
384384 .stream ()
385385 .filter (it -> !Logical .names ().contains (it .getName ()))
386386 .map (it -> {
387- Map <String , Object > arguments = getFieldArguments (environment , it , argument );
387+ Map <String , Object > args = getFieldArguments (environment , it , argument );
388+ Argument arg = new Argument (it .getName (), it .getValue ());
388389
389390 if (isEntityType (environment )) {
390- Attribute <?,?> attribute = getAttribute (environment , new Argument ( it . getName (), it . getValue ()) );
391+ Attribute <?,?> attribute = getAttribute (environment , arg );
391392
392393 if (attribute .isAssociation ()) {
393394 GraphQLFieldDefinition fieldDefinition = getFieldDef (environment .getGraphQLSchema (),
@@ -396,17 +397,17 @@ protected Predicate getArgumentPredicate(CriteriaBuilder cb, From<?,?> path,
396397 boolean isOptional = false ;
397398
398399 return getArgumentPredicate (cb , reuseJoin (path , it .getName (), isOptional ),
399- wherePredicateEnvironment (environment , fieldDefinition , arguments ),
400- new Argument ( it . getName (), it . getValue ()) );
400+ wherePredicateEnvironment (environment , fieldDefinition , args ),
401+ arg );
401402 }
402403 }
403404
404405 return getFieldPredicate (it .getName (),
405406 cb ,
406407 path ,
407408 it ,
408- argumentEnvironment (environment , arguments ),
409- new Argument ( it . getName (), it . getValue ()) );
409+ argumentEnvironment (environment , args ),
410+ arg );
410411 })
411412 .filter (predicate -> predicate != null )
412413 .forEach (predicates ::add );
@@ -445,11 +446,20 @@ protected Predicate getArrayArgumentPredicate(CriteriaBuilder cb,
445446 .filter (it -> Logical .names ().contains (it .getName ()))
446447 .map (it -> {
447448 Map <String , Object > args = e .getValue ();
448-
449- return getArrayArgumentPredicate (cb ,
449+ Argument arg = new Argument (it .getName (), it .getValue ());
450+
451+ if (ArrayValue .class .isInstance (it .getValue ())) {
452+ return getArrayArgumentPredicate (cb ,
453+ path ,
454+ argumentEnvironment (environment , args ),
455+ arg );
456+ }
457+
458+ return getArgumentPredicate (cb ,
450459 path ,
451460 argumentEnvironment (environment , args ),
452- new Argument (it .getName (), it .getValue ()));
461+ arg );
462+
453463 }))
454464 .forEach (predicates ::add );
455465
@@ -460,9 +470,10 @@ protected Predicate getArrayArgumentPredicate(CriteriaBuilder cb,
460470 .filter (it -> !Logical .names ().contains (it .getName ()))
461471 .map (it -> {
462472 Map <String , Object > args = e .getValue ();
473+ Argument arg = new Argument (it .getName (), it .getValue ());
463474
464475 if (isEntityType (environment )) {
465- Attribute <?,?> attribute = getAttribute (environment , new Argument ( it . getName (), it . getValue ()) );
476+ Attribute <?,?> attribute = getAttribute (environment , arg );
466477
467478 if (attribute .isAssociation ()) {
468479 GraphQLFieldDefinition fieldDefinition = getFieldDef (environment .getGraphQLSchema (),
@@ -472,16 +483,16 @@ protected Predicate getArrayArgumentPredicate(CriteriaBuilder cb,
472483
473484 return getArgumentPredicate (cb , reuseJoin (path , it .getName (), isOptional ),
474485 wherePredicateEnvironment (environment , fieldDefinition , args ),
475- new Argument ( it . getName (), it . getValue ()) );
486+ arg );
476487 }
477- }
488+ }
478489
479490 return getFieldPredicate (it .getName (),
480491 cb ,
481492 path ,
482493 it ,
483494 argumentEnvironment (environment , args ),
484- new Argument ( it . getName (), it . getValue ()) );
495+ arg );
485496 }))
486497 .filter (predicate -> predicate != null )
487498 .forEach (predicates ::add );
@@ -495,7 +506,9 @@ private Map<String, Object> getFieldArguments(DataFetchingEnvironment environmen
495506 if (environment .getArgument (argument .getName ()) instanceof Collection ) {
496507 Collection <Map <String ,Object >> list = environment .getArgument (argument .getName ());
497508
498- arguments = list .stream ().filter (args -> args .get (field .getName ()) != null ).findFirst ()
509+ arguments = list .stream ()
510+ .filter (args -> args .get (field .getName ()) != null )
511+ .findFirst ()
499512 .orElse (list .stream ().findFirst ().get ());
500513 } else {
501514 arguments = environment .getArgument (argument .getName ());
@@ -528,14 +541,15 @@ private Predicate getArrayFieldPredicate(String fieldName,
528541 .map (ObjectValue .class ::cast )
529542 .flatMap (it -> it .getObjectFields ().stream ())
530543 .map (it -> {
531- Map <String , Object > arguments = getFieldArguments (environment , it , argument );
544+ Map <String , Object > args = getFieldArguments (environment , it , argument );
545+ Argument arg = new Argument (it .getName (), it .getValue ());
532546
533547 return getFieldPredicate (it .getName (),
534548 cb ,
535549 path ,
536550 it ,
537- argumentEnvironment (environment , arguments ),
538- new Argument ( it . getName (), it . getValue ()) );
551+ argumentEnvironment (environment , args ),
552+ arg );
539553 })
540554 .forEach (predicates ::add );
541555
@@ -561,18 +575,18 @@ private Predicate getFieldPredicate(String fieldName, CriteriaBuilder cb, From<?
561575 expressionValue .getObjectFields ().stream ()
562576 .filter (it -> Logical .names ().contains (it .getName ()))
563577 .map (it -> {
564- Map <String , Object > arguments = getFieldArguments (environment , it , argument );
578+ Map <String , Object > args = getFieldArguments (environment , it , argument );
579+ Argument arg = new Argument (it .getName (), it .getValue ());
565580
566581 if (it .getValue () instanceof ArrayValue ) {
567582 return getArrayFieldPredicate (fieldName , cb , path , it ,
568- argumentEnvironment (environment , arguments ),
569- new Argument ( it . getName (), it . getValue ()) );
583+ argumentEnvironment (environment , args ),
584+ arg );
570585 }
571586
572-
573587 return getFieldPredicate (fieldName , cb , path , it ,
574- argumentEnvironment (environment , arguments ),
575- new Argument ( it . getName (), it . getValue ()) );
588+ argumentEnvironment (environment , args ),
589+ arg );
576590 })
577591 .forEach (predicates ::add );
578592
@@ -584,20 +598,21 @@ private Predicate getFieldPredicate(String fieldName, CriteriaBuilder cb, From<?
584598 GraphQLFieldDefinition fieldDefinition = getFieldDef (environment .getGraphQLSchema (),
585599 this .getObjectType (environment ),
586600 new Field (fieldName ));
587- Map <String , Object > arguments = new LinkedHashMap <>();
601+ Map <String , Object > args = new LinkedHashMap <>();
602+ Argument arg = new Argument (logical .name (), expressionValue );
588603 boolean isOptional = false ;
589604
590605 if (Logical .names ().contains (argument .getName ())) {
591- arguments .put (logical .name (), environment .getArgument (argument .getName ()));
606+ args .put (logical .name (), environment .getArgument (argument .getName ()));
592607 } else {
593- arguments .put (logical .name (), environment .getArgument (fieldName ));
608+ args .put (logical .name (), environment .getArgument (fieldName ));
594609
595610 isOptional = isOptionalAttribute (getAttribute (environment , argument ));
596611 }
597612
598613 return getArgumentPredicate (cb , reuseJoin (path , fieldName , isOptional ),
599- wherePredicateEnvironment (environment , fieldDefinition , arguments ),
600- new Argument ( logical . name (), expressionValue ) );
614+ wherePredicateEnvironment (environment , fieldDefinition , args ),
615+ arg );
601616 }
602617
603618 // Let's parse simple Criteria expressions, i.e. EQ, LIKE, etc.
0 commit comments