枚举的Spring数据方法名称

ali*_*ele 4 java spring spring-data

有什么办法可以将枚举值放在Spring Data的方法名称中?可以使用以下@Query注释来完成:

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

status是枚举。但是,仅使用方法名称怎么办呢?使用类似的东西List<Ticket> findByStatusIsNotClosed();会导致No property isNotClosed found for type TicketStatus

那么,不用它怎么办@Query呢?

Sne*_*kse 5

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

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

List<Ticket> findByTicketStatusNotIn(List<TicketStatus> status);
Run Code Online (Sandbox Code Playgroud)

  • 使用 EnumSet 而不是 ImmutableList 来获取票证状态 (2认同)