我想在Grails中編寫插入查詢。我嘗試了所有可能的組合,但無法獲得正確的語法。任何人都可以幫忙嗎?HQL在Grails中插入查詢
class Person {
int age
String name
}
我嘗試了以下內容:
Person.executeUpdate("insert into Person values (20,"ABC")")
p.s.:Please do not mention using save()
我想在Grails中編寫插入查詢。我嘗試了所有可能的組合,但無法獲得正確的語法。任何人都可以幫忙嗎?HQL在Grails中插入查詢
class Person {
int age
String name
}
我嘗試了以下內容:
Person.executeUpdate("insert into Person values (20,"ABC")")
p.s.:Please do not mention using save()
執行本機查詢:
def sql = new Sql(sessionFactory.currentSession.connection())
sql.execute("insert into person values(?,?)", ["foo", "bar"])
注意person
是實際的表名。
它看起來並不可能。請參閱http://docs.jboss.org/hibernate/core/3.3/reference/en/html/batch.html#batch-direct並注意它說「只支持INSERT INTO ... SELECT ...表單,而不支持INSERT INTO ... VALUES ...表單」。因此,您可以從一個或多個其他表中插入選擇,但不能像使用save()那樣直接插入。
嗨,伯特感謝您的回覆,請檢查我對armandino的回覆的評論。 – WaZ 2010-04-30 09:50:46
感謝您的回覆, 說實話,我的要求是每當一條記錄被更新時,而不是更新記錄,但應該插入一條新記錄,但使用不同的時間戳。 Grails中有什麼可以用來實現這種行爲的框? 非常感謝。 – WaZ 2010-04-30 08:53:38
記錄是否會通過save()更新?例如person.save()使用新的時間戳創建新的人員記錄,而不是更新現有的記錄? – armandino 2010-04-30 16:40:04
這個要求如何適合數據庫的限制。只要想一想你桌子上一行的唯一約束。它不會工作了。據我瞭解,你想要保存關於記錄更改的信息。你應該看看Envers插件:http://code.google.com/p/grails-envers-plugin/ – stefanglase 2010-05-01 10:48:23