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