Я нашел и использовал закрытие, которое временно превращает ведение журнала hibernate.SQL в Trace, чтобы я мог видеть точные сгенерированные запросы. Однако я бы хотел, чтобы PostgresQL запускал объяснения автоматически, а не для извлечения запросов отдельно для анализа.
закрытие журнала:
(найдено здесь: http://www.intelligrape.com/blog/2011/10/21/log-sql-in-grails-for-a-piece-of-code/)
public static def execute(Closure closure) {
Logger sqlLogger = Logger.getLogger("org.hibernate.SQL");
Logger transactionLogger = Logger.getLogger("org.hibernate.transaction");
Level currentLevel = sqlLogger.level
Level transLevel = transactionLogger.level
sqlLogger.setLevel(Level.TRACE)
transactionLogger.setLevel(Level.TRACE)
def result = closure.call()
sqlLogger.setLevel(currentLevel)
transactionLogger.setLevel(transLevel)
result
}
использование:
def result
execute{
result=Dog.createCriteria().list{
eq("breed","Greyhound")
}
}
Я бы хотел что-то, что можно использовать подобным образом.
Это то, что я могу сделать с подклассом Criteria или Hibernate.Restrictions?
Или в документах мне не хватает того, как изменить оператор SQL, отправляемый в БД из GORM?
Спасибо за любую информацию.