Как добавить еще один параметр поиска в отображении гибернации? - PullRequest
1 голос
/ 28 января 2012

Я новичок в спящем состоянии и все еще изучаю основы. Буду признателен, если кто-нибудь укажет мне правильное направление.

У меня есть класс:

Пункт назначения

  • ID
  • имя
  • долгота
  • широта

Я могу читать пункты назначения на основе идентификатора примерно так:

List result = session.createQuery("from Destination as d where d.id=2").list();

Однако я хочу читать адресаты из базы данных, используя имя. Возможно, я могу написать что-то вроде этого в качестве запроса:

String name;  // name set somewhere else, say a function argument
List result = session.createQuery("from Destination as d where d.name LIKE %"+name).list();

Я полагаю, что это приведет ко всем адресатам с именами, похожими на (переменная) name.

Есть ли что-то встроенное в hibernate для таких случаев или есть лучший способ справиться с этим?

EDIT: Одна вещь, которая следует из моего мыслительного процесса: столбец имени в целевой таблице БД будет иметь настройку индекса. Могу ли я каким-то образом сопоставить этот индекс с классом Destination, используя hibernate?

1 Ответ

1 голос
/ 28 января 2012

Вы можете построить свой запрос путем объединения строк. Более элегантным решением было бы использование Hibernate Criteria API .

Ваш запрос будет выглядеть примерно так:

List result = session.createCriteria(Destination.class)
                  .add(Restrictions.like("name", "%" + name)
                  .list();
...