У меня есть такая сущность:
@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;
}
Можно ли найти сущность разговора по репозиторию Spring путем точного сопоставления идентификаторов пользователей? Например, у меня есть следующие сущности:
id | user_ids
------------------------------------------
1 | user-a, user-b, user-c
2 | user-a, user-b
3 | user-a, user-c
Итак, когда мне нужно будет найти беседу по идентификаторам пользователей user-a
и user-c
, обычное предложение IN, например:
SELECT c FROM Conversation c WHERE c.userIds IN :userIds
найдет разговоры с идентификаторами 1 и 3, но я хочу найти точное совпадение, поэтому мой ожидаемый результат - только разговор 3.
Возможное решение - использовать обычное предложение IN в репозитории и следующую коллекцию фильтров на уровне обслуживания, но я предпочитаю решение, которое возвращает требуемый объект непосредственно из базы данных. Возможно ли это в JPQL или хотя бы родном sql? Спасибо.