我在MSSQL中有一个如下所示的表-
create table t1 (
id int IDENTITY(1,1),
col1 int not null,
col2 int not null,
constraint t1_UK UNIQUE (col1, col2)
)
和数据如下-
id col1 col2
1 25 661
2 25 741
3 89 661
4 89 741
如何仅在col 1和col 2上使用where子句选择id为1和id为4的行?
实体定义-
@Entity
@Table
class T1Entity {
@Id
@GeneratedValue
private int id;
@Column
private int col1;
@Column
private int col2;
// getters, setters
}
注意,假设我有T1EntityRepository
,我不能定义像findByCol1InAndCol2In(List.of(25, 89), List.of(661, 741)
这样的方法,因为它将返回示例数据中的所有行。
我知道我需要像Select col1, col2 from t1 where (col1=25 and col2 = 661) OR (col1=89 and col2=741)
这样的东西,但是如何使用JPA来实现这一点呢?(另外,在SQL本身中是否有一种方法可以不使用AND的OR)
1条答案
按热度按时间fhg3lkii1#
我也遇到了同样的问题。我正在使用@Query编写自定义查询来解决这个问题。您可以编写自定义的Where causes,
对于AND和OR组合,您还可以使用
JpaSpecificationExecutor
扩展存储库接口然后使用Criteria Builder。我在项目中执行此操作时引用了https://www.baeldung.com/spring-data-criteria-queries。
希望能有所帮助。