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

Spring JPA to query using "IN" in select statement

我正在尝试根据两个状态(例如 status1 或 status2)查询 table。我应该如何使用 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>

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

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.


参考资料