HQL "Содержит" оператор Howto? - PullRequest
3 голосов
/ 08 февраля 2009

У меня есть объект, у которого есть строковое свойство, называемое Tags. Я хотел бы запросить эту сущность, основываясь на том, находится ли определенная строка в свойстве Tags.

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

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

Возможно, IQuery была бы лучшей стратегией, но я не смог найти какой-либо тип HQL-статистики для свойства, СОДЕРЖАЩЕГО 'abc'.

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

Ответы [ 2 ]

3 голосов
/ 10 февраля 2009

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

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

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

скажем, моя собственность, 'Теги' = а, Ь; с; д, е. Я хочу знать, если "а" существует в тегах. Будет Expression.Like ("Теги", "a") возвращают правда?

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

0 голосов
/ 08 февраля 2009

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

...