2014-04-30 43 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)