@Version Spring不使用ObjectForm

时间:2014-03-25 22:04:09

标签: java spring jsp spring-mvc version

我在一个Java类中使用@Version,并且所有Java类都扩展了它。好。 我也使用objectForm。我使用它是因为假设它更安全(我隐藏了JSP中的所有<form:hidden path="XX"/>),但是当我在浏览器中打开两个选项卡时,如果我修改并保护两个选项卡中的对象,Spring不会检查版本低于数据库版本并保存。如果我不使用对象形式,Spring会提醒我版本较低。是的,objectForm是强制性的。

我的想法是:我在JSP发送ObjectForm。我从jsp修改对象然后,我将对象形式返回到控制器。这样,将objectForm转换为object并保存对象。

有什么想法吗?

一些图片:

enter image description here

enter image description here

1 个答案:

答案 0 :(得分:0)

@Version注释仅适用于直接保存到数据库中的Hibernate实体类。

如果执行以下操作,将验证@Version,如果尝试将具有无效版本的对象保存在数据库中,则抛出异常:

  • 从使用@Version
  • 注释的数据库中读取实体
  • 将实体数据复制到视图层对象(包括版本)
  • 在视图层上修改它
  • 按下保存按钮,将包含版本的表单数据复制到新的实体对象
  • 要保存新数据,请致电entityManager.merge()
  • 合并将触发数据库选择。如果数据库中的版本高于合并对象,您将获得StaleObjectException