在未映射表上执行更新

时间:2014-04-30 07:26:12

标签: hibernate grails gorm

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

我想拥有的是:

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

但当然在hibernate会话实例上没有executeUpdate方法。我不能做session.delete(...),因为这个表没有映射。

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

2 个答案:

答案 0 :(得分:2)

您应该使用createSQLQuery方法:

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

答案 1 :(得分:0)

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

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