Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在某些情况下忽略Ebean版本_Java_Playframework 2.0_Ebean - Fatal编程技术网

Java 在某些情况下忽略Ebean版本

Java 在某些情况下忽略Ebean版本,java,playframework-2.0,ebean,Java,Playframework 2.0,Ebean,在PlayFramework2.2中,我在Ebean中使用了一个版本字段,但在某些情况下,我实际上更希望不更新对象的版本。这有可能吗 所以有人在我的网站上有一个帐户,他们正在查看另一个用户的帖子。如果用户更新了该帖子,它不会在前端自动重新加载。请不要建议我这样做是为了解决问题,我不能那样做 问题是,当用户给帖子打分时,如果用户最近更新了帖子,PUT调用将被拒绝 在这样的特定情况下,有没有办法强迫Ebean忽略version字段 请不要建议我这样做是为了解决问题,我不能那样做 哈哈,没人会建议你:

在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。在查看其他选项后,这似乎是最好的方法。所以,经过一些工作后,它就这样工作了。谢谢