【问题标题】:Query if a array column contains using Criteria使用 Criteria 查询数组列是否包含
【发布时间】:2021-12-08 18:20:30
【问题描述】:

我有一个名为 users 的表,其中有一列 groupIDsLong 类型的列表。

我可以使用Criteria 创建一个查询,以便选择在groupIDs 列中具有给定组ID 的所有用户。我正在使用 Spring Boot 和 PostgreSQL。

我需要类似的结果:

SELECT * 
FROM users 
WHERE groupID IN groupIDs

【问题讨论】:

  • 你能分享更多你的代码吗?例如。 User 实体及其与 groupsIds 的关系?
  • @pleft 抱歉,我不允许共享代码,但 UserEntity 仅有一个列表,其中包含表示它们所属组的 Long 值,并且没有实现其他连接。
  • 你不能分享private List<Long> groupIDs?此属性是否有注释?喜欢@OneToMany 吗?您可以在不暴露完整代码的情况下分享这些小细节。
  • 您的问题中的 SQL 查询未反映您所描述的内容:我可以使用 Criteria 创建一个查询,以便选择在其 groupIDs 列中具有给定 groupID 的所有用户。 -> 这不是“IN”查询。在“IN”查询中,输入参数是 list,而在您的描述中,输入参数是 specific groupId。请澄清您的问题。

标签: spring spring-boot spring-data-jpa


【解决方案1】:

您可以使用列表参数。

Sql 查询:

SELECT * 
FROM users 
WHERE groupID IN (:groupIds)

然后赋值参数:

Map<String,Object> params = new HashMap<>();
params.put("groupIds",Arrays.asList(1l,2l....));
dao.query(sql,params);

要更改为标准,请参阅:

https://stackoverflow.com/a/42531461/1439560

【讨论】:

    猜你喜欢
    • 2013-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-27
    • 1970-01-01
    • 1970-01-01
    • 2014-02-09
    相关资源
    最近更新 更多