3

我有一个人员存储库如下

@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);
}

我无法通过 rest 公开默认方法。有没有办法在不创建 repo 实现的情况下做到这一点?

4

1 回答 1

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查找当天的时间戳)。findByTimestampBetween

于 2018-09-22T04:51:52.687 回答