2011-08-11 2 views
1

여기 발췌입니다/통합 테스트 및 매개 변수 바인딩 실제로 일어난 경우 즉, 마지막 SQL 쿼리에서 where 절을 알고 싶습니다. DB를 실제로 얻으려면 test.active = true가 있어야합니다.매개 변수가 최대 절전 모드의 SessionFactory 통계와 결합

이것도 가능합니까? 그렇지 않다면 어떻게하면이 정보를 얻을 수 있습니까?

답변

0

잘 모르겠지만 내 프로젝트 (C#) 중 하나에서 사용했습니다. db에 보내는 SQL NH를 잡는 사용자 지정 log4net appender를 구현했습니다.

구성

var sqlLogger = (Logger)LogManager.GetRepository().GetLogger("NHibernate.SQL"); 
m_sqlappender = new NhSqlAppender(10); // size of the ring-buffer 
sqlLogger.AddAppender(m_sqlappender); 
if (!sqlLogger.IsEnabledFor(Level.Debug)) 
    sqlLogger.Level = Level.Debug; 

사용

string[] queries = m_sqlappender.CurrentQueries.Pop(); 

CurrentQueries은 그래서 흥미있는 최신 쿼리

+0

을 얻을 수 ringbuffer 스택으로 구현됩니다. 그러나, 이것들은 제가 말하고있는 단위/통합 테스트들입니다. 다음 단계는 쿼리에서 특정 절의 존재 여부를 찾는 것입니다. 당신이 잡은 쿼리는 ORM에 의해 생성 된 SQL 쿼리로, 작업이 복잡하고 어색한 경향이 있습니다. – Sam

관련 문제