You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JPA是否支持WHERE子句中的多列IN成员资格查询?

JPA是否支持多列成员资格查询?

是的,JPA 2.1及更高版本支持WHERE子句中的多列成员资格查询,也就是你示例里的(expr1, expr2) IN ((1, 2), (3, 4))这种形式。

具体用法示例

在JPQL中可以直接使用该语法:

SELECT e FROM YourEntity e 
WHERE (e.column1, e.column2) IN ((1, 2), (3, 4))

如果需要动态传入参数,也可以绑定参数列表:

SELECT e FROM YourEntity e 
WHERE (e.column1, e.column2) IN :valuePairs

在Java代码中,你可以传入一个List<Object[]>类型的参数,每个数组元素对应一组列值:

List<Object[]> valuePairs = Arrays.asList(new Object[]{1, 2}, new Object[]{3, 4});
query.setParameter("valuePairs", valuePairs);

版本兼容说明

  • 若使用JPA 2.0或更早版本,JPA规范本身不支持这种多列IN语法,需要用等价的OR组合替代:
    SELECT e FROM YourEntity e 
    WHERE (e.column1 = 1 AND e.column2 = 2) 
       OR (e.column1 = 3 AND e.column2 = 4)
    
  • 部分JPA实现(如Hibernate)在JPA 2.1之前就提供了扩展支持,但写法可能和规范有差异,为了兼容性,优先遵循JPA标准语法。

内容的提问来源于stack exchange,提问作者eastwater

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 21:27:03