Когда вы не участвуете в транзакции, вы должны освободить соединение, которое GroovySQL получает из источника данных.В пуле заканчиваются соединения, и поэтому он блокируется.
Внутри транзакции TransactionAwareDataSourceProxy позаботится о совместном использовании соединения, и поэтому в этом случае освобождение соединения от GroovySQL не требуется.Подробнее см. http://jira.grails.org/browse/GRAILS-5454.
Это лучший способ использовать GroovySQL в Grails, поскольку перехватчик OpenSessionInView (OSIV) позаботится о закрытии соединения и будет использовать то же соединение с базой данных, что и Hibernate.,Этот метод работает в обоих случаях: внутри транзакций и вне транзакций.
Sql sql = new Sql(sessionFactory.currentSession.connection())