由于某些原因,我需要在未映射的多对多表(自动生成的表)上进行删除。我还没有发现如何用grails或hibernate执行这样的更新。
我想拥有的是:
session.executeUpdate("delete from person_titles where person_id=?", [personId])
但当然在hibernate会话实例上没有executeUpdate
方法。我不能做session.delete(...)
,因为这个表没有映射。
我希望,有一种简单的方法可以做到这一点。
答案 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)