2014-04-30 51 views
1

由於某些原因,我需要在未映射的多對多表(自動生成的表)上進行刪除。我還沒有發現如何在grails或hibernate中執行這樣的更新。在未映射表上執行更新

我想吃點什麼是一樣的東西:

session.executeUpdate("delete from person_titles where person_id=?", [personId]) 

但當然也有不上一個hibernate會話實例executeUpdate方法。而且我不能做session.delete(...),因爲這張表沒有被映射。

我希望,有一個簡單的方法來做到這一點。

回答

2

您應該使用createSQLQuery方法:

Query deleteQuery = session.createSQLQuery("delete from person_titles where person_id=?"); 
deleteQuery.setInteger(0, personId); 
int deleted = deleteQuery.executeUpdate(); 
0

我已經找到一種方法來實現我自己:

def sql = new groovy.sql.Sql (dataSource) 
def deleteCommand = "delete from person_titles where person_id = ${personId}" 
def result = sql.execute(deleteCommand)