2012-03-12 60 views
0

在Oracle中,我们可以创建一个更新查询,它将使用RETURNING子句返回更新的记录。在Hibernate中创建UPDATE RETURNING查询

Hibernate中是否有类似的功能?

+0

保存后的对象是否已经更新? – DrColossos 2012-03-12 18:25:00

+0

是更新后保存的对象已更新。 – Ishmael 2012-03-12 18:32:25

+0

我想我们的情况是更多的设计方法。这些请求通过webservice调用启动,然后更新数据库。我们决定将任何更新或创建的对象以适当的HTTP状态返回给用户。在我们的代码中,我们选择跟踪Web堆栈上下的更新。 – hypno7oad 2012-03-12 18:43:47

回答

0

除了数据库生成的值有明显没有必要,因为该对象传递给Session.saveOrUpdate()更新实例来让Hibernate返回更新实例。数据库生成的值(序列,触发器,默认值等)将在Session.saveOrUpdate之后被设置为,如果它们被相应地注释(或定义在XML映射文件中)。

对于identifier values使用JPA @javax.persistence.GeneratedValue注释与JPA @javax.persistence.Id注释一起使用。对于simple properties使用本地Hibernate @org.hibernate.annotations.Generated注释(afaik没有相应的JPA注释)。

Hibernate检索生成的标识符值取决于生成策略和/或数据库方言。对于简单的属性,Hibernate通过在INSERTUPDATE之后的id语句执行额外的SELECT