Hibernate 对未映射的表执行更新

Hibernate 对未映射的表执行更新,hibernate,grails,gorm,Hibernate,Grails,Gorm,出于某些原因,我需要对未映射的多对多表(自动生成的表)进行删除。我还没有发现如何在grails或hibernate中执行这样的更新 我想要的是: session.executeUpdate("delete from person_titles where person_id=?", [personId]) 当然,hibernate会话实例上没有executeUpdate方法。我无法执行会话。删除(…),因为此表未映射 我希望有一种简单的方法可以做到这一点。您应该使用createSQLQuery

出于某些原因,我需要对未映射的多对多表(自动生成的表)进行删除。我还没有发现如何在grails或hibernate中执行这样的更新

我想要的是:

session.executeUpdate("delete from person_titles where person_id=?", [personId])
当然,hibernate会话实例上没有
executeUpdate
方法。我无法执行
会话。删除(…)
,因为此表未映射


我希望有一种简单的方法可以做到这一点。

您应该使用
createSQLQuery
方法:

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

我自己找到了一种实现这一目标的方法:

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