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
.
参考资料
我正在尝试根据两个状态(例如 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
.