Spring 枚举的数据方法名称

Spring data method name for enum

有什么方法可以将枚举值放入方法名称中并使用 Spring 数据吗?它可以通过 @Query annotaion 来完成,像这样:

  @Query("select t from Ticket as t where t.status != desk.enums.TicketStatus.CLOSED")
  List<Ticket> findActiveTickets();

其中状态是枚举。但是只使用方法名怎么办呢?使用 List<Ticket> findByStatusIsNotClosed(); 之类的东西会导致 No property isNotClosed found for type TicketStatus.

那么不用@Query怎么办呢?

目前 Spring Data JPA 无法做到这一点。方法名称仅使用 属性 遍历进行转换,因此会出现错误。您可以查看 specifications,但这将包括在您的查找方法中添加另一个方法调用。

如果您使用的是 Java 8,则可以在接口中使用 default 关键字来委托给更通用的方法。

default List<Ticket> findActiveTickets() {
    return findByTicketStatusNotIn(ImmutableList.of(TicketStatus.CLOSED));
}

List<Ticket> findByTicketStatusNotIn(List<TicketStatus> status);