相关疑难解决方法(0)

通过集合中的精确匹配查找实体

我有这样的实体:

@Getter
@Setter
@Entity
public class Conversation extends AbstractEntity{

    @ElementCollection
    @Column(name = "user_id", nullable = false)
    @CollectionTable(name = "conversation_user", joinColumns = @JoinColumn(name = "conversation_id", nullable = false))
    private List<String> usersIds;
}
Run Code Online (Sandbox Code Playgroud)

是否可以通过用户 id 的精确匹配通过 spring 的存储库找到对话实体?例如我有这些实体:

 id | user_ids
------------------------------------------
 1  | user-a, user-b, user-c
 2  | user-a, user-b
 3  | user-a, user-c
Run Code Online (Sandbox Code Playgroud)

因此,当我需要通过用户 IDuser-auser-c常规 IN 子句找到对话时,如下所示:

SELECT c FROM Conversation c WHERE c.userIds IN :userIds

会找到 id 1 和 3 的对话,但我想找到完全匹配的,所以我的预期结果只是对话 3。

可能的解决方案是在存储库中使用常规 IN 子句,在服务层中使用下一个过滤器集合,但我更喜欢直接从数据库返回所需实体的解决方案。至少可以在 …

hql jpql spring-data-jpa spring-repositories

6
推荐指数
1
解决办法
576
查看次数

标签 统计

hql ×1

jpql ×1

spring-data-jpa ×1

spring-repositories ×1