Поэтому я использую GigaSpaces XAP с плагином Hibernate для загрузки моей таблицы БД в их кеш сетки, к сожалению, для запросов к сетке они не поддерживают прямой поиск без учета регистра.
Они предложили 2 решения:
1- использовать медленный запрос LIKE (такой же, как SQL) (даже не беспокоиться об этом)
2- создать отдельное свойство полей, которые я хочу, чтобы регистр не учитывался.
Так что теперь мойВарианты выбора:
1- Создать дополнительный столбец в БД, чтобы иметь поле без учета регистра (Не в этом времени жизни)
2- Создать пользовательский плагин загрузчика данных для XAP, чтобы в момент загрузки данных полехранится в свойстве «ToLower».(Поддерживается, но останется в крайнем случае)
Я определенно не пойду с # 1, и в качестве последнего результата я оставлю пользовательский загрузчик данных.Так что моя идея состоит в том, чтобы ...
class Person {
String firstName
String firstNameLower
public void setFirstName(String firstName) {
this.firstName = firstName
this.firstNameLower = firstName.toLowerCase(...);
}
}
Будет ли это работать с Hibernate?Поскольку загрузчик данных GigaSpace использует Hibernate, мой pojo в значительной степени является классом Entity.Я использую отображение Hibernate XML, а не аннотации.Поля «ToLower» не будут отображены.Вызывает ли Hibernate setXXX () для всех отображаемых полей или выполняет какую-то причудливую замену кода под капотом и не вызывает методы setXXX ().
Я также думаю, что аннотация будет хорошейиспользуйте здесь, но не знаете, как их реализовать или даже если это возможно для этого случая.