枚举

时间:2015-05-25 05:35:03

标签: java spring spring-data

有没有办法在Spring Data中将枚举值放在方法名中?可以使用@Query注释完成此操作:

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

其中status是枚举。但是如何只使用方法名称呢?使用List<Ticket> findByStatusIsNotClosed();之类的内容会导致No property isNotClosed found for type TicketStatus

那么如果不使用@Query怎么办呢?

2 个答案:

答案 0 :(得分:4)

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

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

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

答案 1 :(得分:0)

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