gpt4 book ai didi

java - 如果 boolean 值为 false,Ebean 不会更新它们

转载 作者:太空宇宙 更新时间:2023-11-04 13:04:57 24 4
gpt4 key购买 nike

今天,我在 Play Framework 中使用 Ebean 时遇到了非常奇怪的问题。我有多个带有一些 boolean 属性的模型。

如果我最初保存实体,一切都会正常。但是,当我编辑此类实体并将 boolean 值从 true 更改为 false 时,此类属性不会保存。我调查了名为 SQL UPDATE 的情况,并且 UPDATE 中根本缺少所需的属性。无论如何,如果我编辑相同的实体并将相同的 boolean 属性从 false 更改为 true,则更新工作正常。

看起来Ebean正在处理错误的 boolean 值,就像它是空值一样,因此它不会在更新中考虑此类属性。

我正在使用 Java 版本的 Play 2.4.6 和非默认 Ebean 版本 4.7.1。 (由于 bug https://github.com/ebean-orm/avaje-ebeanorm/issues/309,我被迫使用非默认版本的 Ebean)

最佳答案

好吧,我明白了。不是 Ebean 问题。这是 Play 框架和 HTTP 处理的“设计”行为。

问题出在 HTML 表单的 boolean 值绑定(bind)上。当我勾选表单的复选框时,我会从请求中获取返回值(类似于 id_of_checkbox = true)。当我不勾选复选框时,请求中不会返回任何内容,因此不会设置 Entity 属性。因此,Ebean 认为该属性没有改变,因此不需要在 SQL 语句中包含该属性,因此不会更新。

关于java - 如果 boolean 值为 false,Ebean 不会更新它们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34576478/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com