2013-05-12 61 views
2

我试图执行使用类似原始的SQL查询原始SQL查询来的Grails:在当前事务

def dataSource; 
Sql sql = new Sql(dataSource); 

但是,似乎这个运行在它自己的独立的交易。因此,它忽略了在服务方法中完成的所有(未提交)更改。

在当前事务中运行原始sql查询的最佳方式是什么?

回答

7

上面的代码会创建一个新的连接,因此是一个新的事务。您可以使用当前的Hibernate会话(注入sessionFactory)在当前事务中执行原始sql,如下所示。

def session = sessionFactory.getCurrentSession() 
def results = session.createSQLQuery(yourQueryString) 
相关问题