2010-05-24 57 views
0

我在我的項目中使用Hibernate和存在一定的情況下,我想用uniqueResult()在org.hibernate.SQLQuery方法類執行本機SQL INSERTUPDATE操作。使用SQLQuery.uniqueResult()來執行本地SQL INSERT和UPDATE

我曾嘗試在同一個類上使用executeUpdate()方法。但是我收到一個錯誤,說他們只用於HQL更新。

如果這是確保數據在數據庫中被保存/更新的有效且可靠的方式,請諮詢。

回答

0

session.createSQLQuery()是查詢,而不是操縱。如果您想要執行原始SQL插入,請使用session.connection()和直接的JDBC代碼。

不知道爲什麼你需要這個確切的,但我也建議檢查16.3. Custom SQL for create, update and delete

+0

謝謝帕斯卡。但是,session.connection()會在當前Hibernate Session的事務邊界內工作嗎? 其實我想爲某些插入和更新執行本機SQL,並且出於性能原因需要使用原始SQL執行此操作。除此之外,我正在處理一個數據庫,這個數據庫的模式並沒有在實體上進行設計/優化,所以我很難讓Hibernate和它一起工作。 我正在做一些插入使用uniqueResults(),它適用於大多數地方,但在某些情況下無法插入數據。因此我想要用老派的JDBC方式來做到這一點。 – oddjobsman 2010-05-24 18:29:32

+0

@RananathKini:'session.connection()'返回底層的JDBC連接,因此,它可以在當前事務的邊界內工作。 – 2010-05-24 19:04:08

相關問題