我有一个名为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
代替其实际值?
答案 0 :(得分:0)
您可以使用以下代码将每个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
课程,以满足您的其他要求。 This Q / A可能也有帮助。