JPA поиск на карте <String, String>

Вопрос:

У меня проблемы с JPA.. Я пытаюсь найти на карте определенное количество строк.

вот мое свойство объекта:

@ElementCollection(fetch= FetchType.EAGER)
@MapKeyColumn(name="locale")
@Column(name="value")
private Map<Locale, String> localized = new HashMap<Locale, String>();

и я пытаюсь найти одно значение локализованной карты следующим образом:

SELECT count(f) FROM Faq f  WHERE f.answer.localized like :question.

Я попытался использовать элементы (f.answer.localized), но он не работает. Есть ли другое решение, кроме создания “LocalizedObject”, на котором я мог бы использовать InnerJoin?

edit: Я хочу найти событие, поэтому, если на карте есть {[en_US: “привет Джо”, en_UK: “большой вверх”]}, поле поиска может быть “вверх”.
Спасибо !

Ответ №1

JPQL включает операторы Key и Value, чтобы вы могли указать, какую часть карты вы хотите использовать в своем запросе. Например, здесь вы можете использовать:

"SELECT count(f) FROM Faq f join f.answer.localized localized WHERE VALUE(localized) like :question"

Оцените статью
TechArks.Ru
Добавить комментарий