我正在尝试使用与
类似的东西执行原始SQL查询def dataSource;
Sql sql = new Sql(dataSource);
但是,它似乎在一个单独的事务中运行。因此,它错过了在服务方法中完成的所有(未提交的)更改。
在当前事务中运行原始sql查询的最佳方法是什么?
答案 0 :(得分:8)
上面的代码会创建一个新连接,因此会产生一个新事务。您可以使用当前的Hibernate会话(注入sessionFactory)在当前事务中执行原始sql,如下所示。
def session = sessionFactory.getCurrentSession()
def results = session.createSQLQuery(yourQueryString)