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

标签 java sql playframework ebean

今天,我在 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/

相关文章:

java - 获取 Rhino JS 以查看 Java 类

java - 在触摸另一个 EditText 后请求焦点到一个 EditText?

java - 如何在 Freemarker 模板中创建列表

java - OutOfMemory 使用 inJustDecodeBounds=true 解码图像

php - 如何在 php mysql 中查找具有相同值的行数

java - 不执行临时验证

sql - 此表和查询的最佳索引?

java - Spring - JdbcTemplate - 使用 CTE 和枚举行进行查询

java - 为什么bindFromRequest 使用了错误的形式?

scala - 光滑的 groupBy 中的任何字符串连接方法?