NHibernate - Как зарегистрировать именованный параметризованный запрос со значениями параметров? - PullRequest
0 голосов
/ 14 января 2019

У меня есть параметризованный запрос Query, подобный этому:

Query moveOutQuery = session.createSQLQuery(moveOutQueryStr.toString())
                .addEntity(MyClass.class)
                .setParameter("assignmentStatus", Constants.CHECKED_OUT)

Я хочу увидеть фактический запрос SQL с заполненными параметрами. Однако при отладке я получаю только следующий запрос:

Select * from my_assignment WHERE assignment_status in ( :assignmentStatus )

Почему assignmentStatus не заменяет его действительное значение?

1 Ответ

0 голосов
/ 14 января 2019

Вы можете записать каждый SQL в файл со следующим кодом:

Hierarchy hierarchy = (Hierarchy)LogManager.GetRepository();
hierarchy.Root.RemoveAllAppenders();

FileAppender fileAppender = new FileAppender();
fileAppender.Name = "NHFileAppender";
fileAppender.File = logFilePath;
fileAppender.AppendToFile = true;
fileAppender.LockingModel = new FileAppender.MinimalLock();
fileAppender.Layout = new PatternLayout("%d{yyyy-MM-dd HH:mm:ss}:%m%n%n");
fileAppender.ActivateOptions();

Logger logger = hierarchy.GetLogger("NHibernate.SQL") as Logger;
logger.Additivity = false;
logger.Level = Level.Debug;
logger.AddAppender(fileAppender);

hierarchy.Configured = true;

Вам нужно вызывать этот код один раз при запуске приложения. Выходной журнал также включает значения параметров.

Это реализовано через Log4Net; вам нужно добавить ссылку. Это регистрирует как успешные, так и неудачные утверждения Вы можете играть с классами FileAppender и Logger, чтобы удовлетворить ваши дополнительные требования. Это Q / A также может помочь.

...