Я хочу использовать локализацию (с возможностью поиска) в своих моделях, и я придумал следующую модель:
@Entity
public class Category {
...
@ElementCollection
//key = language code (e.g. 'en') and value = localized label
private Map<String, String> name;
...
}
Чего я не хочу делать, так это запрашивать категории, которые содержат иглу без учета регистра в определенной локализации (например, с «% abc%» в их английском имени)
Я пробовал что-то вроде
from Category where name.key = :locale and lower(name.value) like :text
но это не удается с исключением невозможно разыменовать скалярный элемент коллекции.
Теперь документ hibernate говорит, что я должен использовать elements() и index() для значений и ключей. Для ключа было бы легко использовать :locale in indices(name), но как я могу сопоставить часть значения этой локали без учета регистра?
И на всякий случай, если это невозможно с помощью hql с моей моделью, как еще я могу смоделировать локализацию с возможностью поиска?