我在Play Framework 2.2中使用带有Ebean的Version字段,但在某些情况下我实际上宁愿不更新对象的版本。这有可能吗?
所以有人在我的网站上有一个帐户,他们正在查看另一个用户的帖子。如果用户更新该帖子,则不会在前端自动重新加载。请不要建议我这样做来解决问题,我不能这样做。
问题是当用户给帖子评分时,如果用户最近更新帖子,PUT会被拒绝。
在这种特定情况下,有没有办法强制Ebean忽略版本字段?
答案 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