有没有办法在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
怎么办呢?
答案 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方法中添加另一个方法调用。