@@ -447,7 +447,7 @@ public Page<T> findAll(Pageable pageable) {
447
447
}
448
448
449
449
@ Override
450
- public Optional <T > findOne (@ Nullable Specification <T > spec ) {
450
+ public Optional <T > findOne (Specification <T > spec ) {
451
451
452
452
try {
453
453
return Optional .of (getQuery (spec , Sort .unsorted ()).setMaxResults (2 ).getSingleResult ());
@@ -457,23 +457,64 @@ public Optional<T> findOne(@Nullable Specification<T> spec) {
457
457
}
458
458
459
459
@ Override
460
- public List <T > findAll (@ Nullable Specification <T > spec ) {
460
+ public List <T > findAll (Specification <T > spec ) {
461
461
return getQuery (spec , Sort .unsorted ()).getResultList ();
462
462
}
463
463
464
464
@ Override
465
- public Page <T > findAll (@ Nullable Specification <T > spec , Pageable pageable ) {
465
+ public Page <T > findAll (Specification <T > spec , Pageable pageable ) {
466
466
467
467
TypedQuery <T > query = getQuery (spec , pageable );
468
468
return isUnpaged (pageable ) ? new PageImpl <>(query .getResultList ())
469
469
: readPage (query , getDomainClass (), pageable , spec );
470
470
}
471
471
472
472
@ Override
473
- public List <T > findAll (@ Nullable Specification <T > spec , Sort sort ) {
473
+ public List <T > findAll (Specification <T > spec , Sort sort ) {
474
474
return getQuery (spec , sort ).getResultList ();
475
475
}
476
476
477
+ @ Override
478
+ public boolean exists (Specification <T > spec ) {
479
+
480
+ CriteriaQuery <Integer > cq = this .em .getCriteriaBuilder ().createQuery (Integer .class );
481
+ cq .select (this .em .getCriteriaBuilder ().literal (1 ));
482
+ applySpecificationToCriteria (spec , getDomainClass (), cq );
483
+ TypedQuery <Integer > query = applyRepositoryMethodMetadata (this .em .createQuery (cq ));
484
+ return query .setMaxResults (1 ).getResultList ().size () == 1 ;
485
+ }
486
+
487
+ @ Override
488
+ public long delete (Specification <T > spec ) {
489
+
490
+ CriteriaBuilder builder = this .em .getCriteriaBuilder ();
491
+ CriteriaDelete <T > delete = builder .createCriteriaDelete (getDomainClass ());
492
+
493
+ if (spec != null ) {
494
+ Predicate predicate = spec .toPredicate (delete .from (getDomainClass ()), null , builder );
495
+
496
+ if (predicate != null ) {
497
+ delete .where (predicate );
498
+ }
499
+ }
500
+
501
+ return this .em .createQuery (delete ).executeUpdate ();
502
+ }
503
+
504
+ @ Override
505
+ public <S extends T , R > R findBy (Specification <T > spec , Function <FetchableFluentQuery <S >, R > queryFunction ) {
506
+
507
+ Assert .notNull (spec , "Specification must not be null" );
508
+ Assert .notNull (queryFunction , "Query function must not be null" );
509
+
510
+ Function <Sort , TypedQuery <T >> finder = sort -> getQuery (spec , getDomainClass (), sort );
511
+
512
+ FetchableFluentQuery <R > fluentQuery = new FetchableFluentQueryBySpecification <T , R >(spec , getDomainClass (),
513
+ Sort .unsorted (), null , finder , this ::count , this ::exists , this .em );
514
+
515
+ return queryFunction .apply ((FetchableFluentQuery <S >) fluentQuery );
516
+ }
517
+
477
518
@ Override
478
519
public <S extends T > Optional <S > findOne (Example <S > example ) {
479
520
@@ -503,32 +544,6 @@ public <S extends T> boolean exists(Example<S> example) {
503
544
return query .setMaxResults (1 ).getResultList ().size () == 1 ;
504
545
}
505
546
506
- @ Override
507
- public boolean exists (Specification <T > spec ) {
508
-
509
- CriteriaQuery <Integer > cq = this .em .getCriteriaBuilder ().createQuery (Integer .class );
510
- cq .select (this .em .getCriteriaBuilder ().literal (1 ));
511
- applySpecificationToCriteria (spec , getDomainClass (), cq );
512
- TypedQuery <Integer > query = applyRepositoryMethodMetadata (this .em .createQuery (cq ));
513
- return query .setMaxResults (1 ).getResultList ().size () == 1 ;
514
- }
515
-
516
- @ Override
517
- public long delete (Specification <T > spec ) {
518
-
519
- CriteriaBuilder builder = this .em .getCriteriaBuilder ();
520
- CriteriaDelete <T > delete = builder .createCriteriaDelete (getDomainClass ());
521
-
522
- if (spec != null ) {
523
- Predicate predicate = spec .toPredicate (delete .from (getDomainClass ()), null , builder );
524
-
525
- if (predicate != null ) {
526
- delete .where (predicate );
527
- }
528
- }
529
-
530
- return this .em .createQuery (delete ).executeUpdate ();
531
- }
532
547
533
548
@ Override
534
549
public <S extends T > List <S > findAll (Example <S > example ) {
@@ -571,19 +586,6 @@ public <S extends T, R> R findBy(Example<S> example, Function<FetchableFluentQue
571
586
return queryFunction .apply (fluentQuery );
572
587
}
573
588
574
- @ Override
575
- public <S extends T , R > R findBy (Specification <T > spec , Function <FetchableFluentQuery <S >, R > queryFunction ) {
576
-
577
- Assert .notNull (spec , "Specification must not be null" );
578
- Assert .notNull (queryFunction , "Query function must not be null" );
579
-
580
- Function <Sort , TypedQuery <T >> finder = sort -> getQuery (spec , getDomainClass (), sort );
581
-
582
- FetchableFluentQuery <R > fluentQuery = new FetchableFluentQueryBySpecification <T , R >(spec , getDomainClass (),
583
- Sort .unsorted (), null , finder , this ::count , this ::exists , this .em );
584
-
585
- return queryFunction .apply ((FetchableFluentQuery <S >) fluentQuery );
586
- }
587
589
588
590
@ Override
589
591
public long count () {
0 commit comments