2009-02-08 5 views
3

У меня есть сущность, которая имеет свойство string, называемое тегами. Я хотел бы запросить этот объект, основываясь на том, что определенная строка находится в свойстве Tags.Инструкция HQL «Содержит»?

Так, например, у меня была бы функция IList GetEntityByTag (строковый тег), это вернет все объекты Entity, которые имеют значение тега в свойстве «Теги».

Я попытался пройти через подход ICriteria ... Expression.In (PropertyName, Value), но это полная противоположность. Мне нужно что-то вроде Expression.In (Value, PropertyName).

Возможно, IQuery будет лучшей стратегией, но я не смог найти какой-либо тип HQL-статуса для свойства CONTAINS 'abc'.

Любая помощь или направление направления будет большим спасибо!

+0

Вот ссылка на отличную статью о выражениях, и как использовать критерии: http://www.javalobby.org/articles/hibernatequery102/ –

ответ

0

Вы имеете в виду Expression.Like (PropertyName, Value)?

+0

Привет, Алекс, это похоже на Expression.In, но это все еще противоположность что мне нужно. Я хочу знать, существует ли значение в PropertyName. Нет, если PropertyName существует в значении – 2009-02-08 15:56:50

+0

Если ... скажем, мое свойство, 'Tags' = a; b; c; d; e. Я хочу знать, существует ли 'a' в тегах. Будет ли выражение Expression.Like («Теги», «a») верным? – 2009-02-08 15:58:38

3

Если вы хотите знать, если тег подстроки в вашей собственности Метки, вы можете рассмотреть следующие советы:

  • Вы можете конвертировать как строку вы ищите в и поиск в в нижнем регистре. Expression.ilike делает это для вас. Гол.
  • Чтобы узнать, существует ли поисковый запрос в любом месте поля, вы можете установить параметр MatchMode в ilike-функции MatchMode.ANYWHERE.

Если, как вы прокомментировали ранее,

скажем мою собственность, «Метки» = а, Ь, с, d, е. Я хочу знать, существует ли 'a' в тегах. Will Expression.Like ("Теги", "a") return true?

Если 'a; b; c; d; e' - строка, Expression.ilike ("Теги", "a", MatchMode.ANYWHERE) вернет true.

+0

как бы вы это сделали, используя IQuery? – 2009-04-12 14:19:06