Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.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
Playframework 2.0 游戏框架2:Ebean和OptimisticLockException_Playframework 2.0_Ebean - Fatal编程技术网

Playframework 2.0 游戏框架2:Ebean和OptimisticLockException

Playframework 2.0 游戏框架2:Ebean和OptimisticLockException,playframework-2.0,ebean,Playframework 2.0,Ebean,我对Eben和update有问题。我需要的一切都是这样的: public static Result cancelOrder(Long id){ Order order = Order.findByID(id); if(order != null){ order.canceled = true; order.update(id); } return OK(); } 我的模型: @Entity @Table(name="order") public class Order ex

我对Eben和update有问题。我需要的一切都是这样的:

public static Result cancelOrder(Long id){
Order order = Order.findByID(id);
if(order != null){
    order.canceled = true;
    order.update(id);
}
return OK();
}
我的模型:

@Entity 
@Table(name="order")
public class Order extends Model {
    @Id
    @Column(name="ID")
    public long id;

    @Constraints.Required
    public String date;

    @Constraints.Required
    public String name;

    public Boolean canceled;

    public Order(String date, String name){
         this.date = date;
         this.name = name;
    }
    public static Model.Finder<String,Order> find = new Model.Finder(String.class, Order.class);

    public static Order findByID(long id) {
        return find.where().eq("ID", id).findUnique();
    }
}

但它不起作用,因为我得到了异常乐观的锁异常:数据已经改变。已更新[0]行。我发现了一些类似的问题,但一切都与形式有关,而不是像这样。你能帮助我吗?谢谢你有同样的问题

所发生的事情是,ebean以一种奇怪的方式构建更新查询,而不仅仅是使用WHERE id=?但是id=?字段1=?等等。 如果表中有一个float字段,那么mysql怪癖就会出现,float\u field=0.1并不总是返回true,即使float\u field为0.1,它也是近似值:/

因此,一种解决方案是将浮点字段转换为十进制


另一个解决方案是让ebean只使用@Id构建更新查询。。。无法弄清楚如何或甚至是否可能…

我在使用Float数据类型时遇到了类似的问题。我已更改为仅以DB为单位的十进制数据类型,并使用@Column表示法定义了长度:

@ColumnDefinition=小数10,3 公开上市的例子


…它可以工作。

请显示您的订单类的更新方法。我没有自己的更新。我通过扩展模型使用默认值。您的代码看起来很正常,您能给我们展示更多完整的代码吗?也许还有其他一些恼人的错误,关于类型的问题,或者别的什么。