У меня проблемы с 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: “большой вверх”]}, поле поиска может быть “вверх”.
Спасибо !
JPQL включает операторы Key и Value, чтобы вы могли указать, какую часть карты вы хотите использовать в своем запросе. Например, здесь вы можете использовать:
"SELECT count(f) FROM Faq f join f.answer.localized localized WHERE VALUE(localized) like :question"