Можно ли переопределить оператор Hibernate 'like' в HQL? - PullRequest
4 голосов
/ 17 июня 2010

Мне интересно, возможно ли следующее в Hibernate; при написании HQL-запроса вы можете сказать что-то вроде

select foo from Foo where foo.barString like "%baz%"

Это работает при условии, что класс Foo имеет атрибут String с именем barString.

Теперь предположим, что Foo является атрибутом bar типа Bar, но этот Bar имеет хорошо известное каноническое представление String. Предположим, что это то, что можно легко и быстро вычислить (скажем, путем конкатенации), но что оно не хранится в БД. Есть ли способ сопоставить / изменить класс, чтобы вы могли написать что-то вроде

 select foo from Foo where foo.bar like "%baz%"

или

 select foo from Foo where foo.bar.toCanonicalString like "%baz%"

или даже

 select foo from Foo where toCanonicalString(foo.bar) like "%baz%"

Спасибо PH

1 Ответ

1 голос
/ 17 ноября 2011

для вашей задачи вы можете использовать формулу в отображении с xml: http://docs.jboss.org/hibernate/core/3.3/reference/en/html/mapping.html#mapping-column

с аннотациями: http://docs.jboss.org/ejb3/app-server/HibernateAnnotations/reference/en/html_single/index.html#d0e2009

, то есть у вас есть вычисляемое поле в hql

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...