eclipse / jnosql

Eclipse JNoSQL is a framework which has the goal to help Java developers to create Jakarta EE applications with NoSQL.
Other
229 stars 72 forks source link

Add support for default method on repositories #385

Closed otaviojava closed 1 year ago

otaviojava commented 1 year ago

Changes

Add support for default methods on an interface and also extra interface:

  interface BaseQuery<T> {

        List<T> findByScoreLessThan(int score);

        default List<T> lessTen() {
            return this.findByScoreLessThan(10);
        }
    }

@Repository    
interface PersonRepository extends PageableRepository<Person, Long>, BaseQuery<Person> {

   List<Person> findByName(String name);

   List<Person> findByNameNot(String name);

default Map<Boolean, List<Person>> partcionate(String name) {

            Objects.requireNonNull(name, "name is required");
            Map<Boolean, List<Person>> map = new HashMap<>();
            map.put(true,  findByName(name));
            map.put(false, findByNameNot(name));
            return map;
        }
}

@Repository    
interface Garage extends PageableRepository<Car, Long>, BaseQuery<Car> {
}

So, the project will support both:

@Inject
Garage garage;

@Inject
PersonRepository repository;

List<Person> people = repository.findByScoreLessThan(14);
List<Car> cars = garage.findByScoreLessThan(14);
Map<Boolean, List<Person>> parcionate = repository.partcionate("Otaviojava");
....

Implements this issue: https://github.com/jakartaee/data/issues/148