2013-05-12 33 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)