在某些情况下忽略Ebean版本

时间:2014-11-06 13:06:45

标签: java playframework-2.0 ebean

我在Play Framework 2.2中使用带有Ebean的Version字段,但在某些情况下我实际上宁愿不更新对象的版本。这有可能吗?

所以有人在我的网站上有一个帐户,他们正在查看另一个用户的帖子。如果用户更新该帖子,则不会在前端自动重新加载。请不要建议我这样做来解决问题,我不能这样做。

问题是当用户给帖子评分时,如果用户最近更新帖子,PUT会被拒绝。

在这种特定情况下,有没有办法强制Ebean忽略版本字段?

2 个答案:

答案 0 :(得分:1)

  

请不要建议我这样做来解决问题,我不能这样做。

大声笑,没有人会建议你:)

自定义语句应避免更新版本:

SqlUpdate update = Ebean.createSqlUpdate("UPDATE post set likes = likes+1 where id = :id");
update.setParameter("id", post.id).execute();

(测试它,按要求工作)

答案 1 :(得分:0)

作为在Ebean 4.x中使用SqlUpdate的替代方法,您可以使用“无状态更新”。请注意,对于counter = counter + 1用例,SqlUpdate仍然更适合。

Customer customer = new Customer();
customer.setId(42);
customer.setName("Please update the name")
// customer.setVersion(2)   ... not setting the version property

// perform stateless update (and the version property was not set)
Ebean.update(customer);

// effectively results in:
update customer set name = 'Please update the name' where id = 42