Grails: необработанный SQL-запрос в текущей транзакции
Я пытаюсь выполнить необработанный sql-запрос, используя что-то похожее на
def dataSource;
Sql sql = new Sql(dataSource);
Но, похоже, что это происходит в отдельной отдельной транзакции. Поэтому он пропускает все (незафиксированные) изменения, сделанные до него в методе службы.
Как лучше всего выполнить необработанный sql-запрос в текущей транзакции?
1 ответ:
Приведенный выше код создаст новое соединение, следовательно, новую транзакцию. Вы можете использовать текущий сеанс гибернации (injecting sessionFactory) для выполнения необработанного sql в текущей транзакции, как показано ниже.
def session = sessionFactory.getCurrentSession() def results = session.createSQLQuery(yourQueryString)