PostgreSQL с NHibernate, проблема с LIKE и параметром - PullRequest
0 голосов
/ 21 сентября 2009

У меня проблема с PostgeSQL и NHibernate. Я пробовал HQL и критерии и выберите ничего не возвращает. Я использовал log4net для получения сгенерированного запроса, заменил параметры на значение и запрос вернул результат, почему так? Существует ли специальная конфигурация для Postgre или NHibernate? Я даже пытался с понижением (ниже (столбец), как ниже (: параметр)) и без результата.

HQL : return sess.CreateQuery("from VersFile e where e.ConfigId = :confId and lower(e.FolderPath) like lower(:path) and e.Type = :type and e.Statuss = :statuss and e.Tester != '' order by e.Sequence asc").SetString("path",path).SetInt32("type", fileType).SetInt32("confId", configId).SetInt32("statuss", recordStatuss).List<VersFile>();

FolderPath - это символьный столбец

ИЛИ Критерии

return sess.CreateCriteria(typeof(VersFile)).Add(Expression.Eq("Type", fileType)).Add(Expression.Eq("Statuss", recordStatuss)).Add(Expression.Eq("ConfigId", configId)).Add(Expression.Like("FolderPath", path, MatchMode.Start)).Add(Expression.Not(Expression.Eq("Tester", ""))).Add(Expression.Not(Expression.Eq("Statuss", (int)RecordStatuss.Merged))).AddOrder(Order.Asc("Sequence")).List<VersFile>();

Сгенерированный запрос выглядит как

select .... from versfile versfile0_ where ( versfile0_.statuss!=99) and versfile0_.confId=:p0 and (lower(versfile0_.fpath) like lower(:p1)) order by versfile0_.sequen asc;:p0 = 1, :p1 = '\%MainVss\%WinGui\%'

Я удалил ненужные параметры из строки запроса

1 Ответ

1 голос
/ 21 сентября 2009

На самом деле, '\%MainVss\%WinGui\%' не совсем подходит в современных постгресах. Это либо E'\%MainVss\%WinGui\%', либо '% MainVss% WinGui%'. Что эквивалентно '%MainVss%WinGui%', а это не обязательно то, что вы хотите.

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