Spring JPA在select语句中使用“IN”进行查询

时间:2015-01-20 17:03:01

标签: spring jpa spring-data-jpa

我尝试根据两种状态查询表格,例如status1或status2。我应该如何使用Spring JPA在一个SQL语句中实现。

ws = consultSessionRepository.findByShareIdAndStatus(consultId,
                    consultStatus.active);

public interface ConsultSessionRepository extends JpaRepository<consultSession, Long>  {

    @Query("select ws from consultSession ws where consultId = ?")
    consultSession findByconsultid(String consultId);

    @Query("select ws from consultSession ws where shareId = ?")
    List<consultSession> findByShareId(String shareId);

    consultSession findByShareIdAndStatus(String shareId, consultStatus satus);

}

尝试实现以下内容

select * from consultSession where status in ('ACTIVE', 'ACTIVE1') and shareid = '<share id>

1 个答案:

答案 0 :(得分:2)

您可以使用方法名称构建查询,该方法名称遵循以下文档中提到的规则,如下所示:

consultSession findByShareIdAndStatusIn(String shareId, consultStatus... states);

或使用@Query注释,这是恕我直言更可读:

@Query("FROM consultSession cs WHERE shareId = ?1 AND status IN (?2)")
List<Foo> find(String shareId, consultStatus... states);

顺便说一下,我认为这个consultId in ('ACTIVE', 'ACTIVE1')是一个拼写错误,应该是status而不是consultId


参考