Spring数据休息 - 公开默认方法

时间:2017-04-18 19:56:37

标签: spring-data-rest default-method spring-repositories

我有一个Person Repository,如下所示

@RepositoryRestResource
public interface PersonRepository extends Repository<Person, String> {
    List<Person> findAll();

    default List<Person> findNewPersons() {
         return findByStartDateAfter(LocalDate.now().minusMonths(3));
    }
    List<Person> findByStartDateAfter(LocalDate date);
}

我无法通过休息公开默认方法..有没有办法在不创建repo的实现的情况下完成它?

1 个答案:

答案 0 :(得分:0)

我遇到了类似的问题,并且能够使用@Query批注中的HQL查询中的SpEL表达式来解决该问题。

虽然没有使用默认方法那么干净的方法,但这是我无需编写自定义控制器或不使用新的DSL库引入自定义实现或仅用于此查询的东西就可以找到的最简洁的方法。

@Query("select p from Person p where p.startDate > :#{#T(java.time.LocalDate).now().minusMonths(3)}")
List<Person> findNewPersons();

我的实际查询是不同的,因此我可能在这里输入了语法,但思路是相同的,并且适用于我的情况(我使用了LocalDate参数,并在当天使用了{ {1}}样式查询。