2010-05-24 86 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

相关问题