Java 在某些情况下忽略Ebean版本
在PlayFramework2.2中,我在Ebean中使用了一个版本字段,但在某些情况下,我实际上更希望不更新对象的版本。这有可能吗 所以有人在我的网站上有一个帐户,他们正在查看另一个用户的帖子。如果用户更新了该帖子,它不会在前端自动重新加载。请不要建议我这样做是为了解决问题,我不能那样做 问题是,当用户给帖子打分时,如果用户最近更新了帖子,PUT调用将被拒绝 在这样的特定情况下,有没有办法强迫Ebean忽略version字段 请不要建议我这样做是为了解决问题,我不能那样做 哈哈,没人会建议你:) 自定义语句应避免更新版本:Java 在某些情况下忽略Ebean版本,java,playframework-2.0,ebean,Java,Playframework 2.0,Ebean,在PlayFramework2.2中,我在Ebean中使用了一个版本字段,但在某些情况下,我实际上更希望不更新对象的版本。这有可能吗 所以有人在我的网站上有一个帐户,他们正在查看另一个用户的帖子。如果用户更新了该帖子,它不会在前端自动重新加载。请不要建议我这样做是为了解决问题,我不能那样做 问题是,当用户给帖子打分时,如果用户最近更新了帖子,PUT调用将被拒绝 在这样的特定情况下,有没有办法强迫Ebean忽略version字段 请不要建议我这样做是为了解决问题,我不能那样做 哈哈,没人会建议你:
SqlUpdate update = Ebean.createSqlUpdate("UPDATE post set likes = likes+1 where id = :id");
update.setParameter("id", post.id).execute();
(经过测试,可以根据需要工作)作为在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
是的,自定义sql可以做到这一点,但我有一个系统覆盖继承,在任何地方添加自定义sql都是非常麻烦的,如果可能的话,我想避免这样做。我建议只为像CounterWell这样的事情添加自定义statemets。在查看其他选项后,这似乎是最好的方法。所以,经过一些工作后,它就这样工作了。谢谢