Grails: необработанный SQL-запрос в текущей транзакции


Я пытаюсь выполнить необработанный sql-запрос, используя что-то похожее на

def dataSource;
Sql sql = new Sql(dataSource);
Но, похоже, что это происходит в отдельной отдельной транзакции. Поэтому он пропускает все (незафиксированные) изменения, сделанные до него в методе службы.

Как лучше всего выполнить необработанный sql-запрос в текущей транзакции?

1 3

1 ответ:

Приведенный выше код создаст новое соединение, следовательно, новую транзакцию. Вы можете использовать текущий сеанс гибернации (injecting sessionFactory) для выполнения необработанного sql в текущей транзакции, как показано ниже.

def session = sessionFactory.getCurrentSession()
def results = session.createSQLQuery(yourQueryString)