布尔字段始终为真

Posted

技术标签:

【中文标题】布尔字段始终为真【英文标题】:Boolean field is always true 【发布时间】:2013-11-16 13:12:20 【问题描述】:

我的字段如下所示:

@Column(columnDefinition = "Number(1,0) default '1'")
protected Boolean developersVisible;

当我从数据库中获取对象时,值总是true。无论数据库中有什么(null、0、1)

我正在使用 Oracle 数据库

解决了!

当我通过 sqldeveloper 更改值时我没有提交

我接受了 Óscars 的回答,因为它真的很有帮助

【问题讨论】:

为什么不看看被调用的SQL呢? @DataNucleus 选择看起来正常 @PhilippSander 您需要检查选择、插入/更新和查询以自动生成表模式。 我通过 db 更新了值但没有插入 【参考方案1】:

您是否尝试过使用另一个列定义,例如CHAR? 详情请见this post。

【讨论】:

不!这将创建对数据库的依赖关系。我知道甲骨文没有布尔值或位。这是 JPA 的工作(恕我直言) 您可以确定您当前的代码(使用当前的 columnDefinition)也创建了对数据库的依赖项(例如,mysql 没有这样的列类型Number)。请更改您的问题并注意您不希望数据库依赖。在这种情况下,奥斯卡的答案绝对是一个不错的答案。 我已经这样做了。摆脱依赖是我这样做的原因之一【参考方案2】:

在这种情况下不要使用columnDefinition 属性,这不是必需的,它可能会混淆字段的映射。 default 1 部分解释了为什么你总是得到 true 值。试试这个:

@Column
protected Boolean developersVisible = Boolean.TRUE;

【讨论】:

但我希望在添加列时所有值都为真 @PhilippSander 查看我的更新,这就是您创建默认值的方式。除非绝对必要,否则避免columnDefinition,否则会影响代码的可移植性 这不是为所有条目设置true1(当我添加字段时它设置null(我删除它并再次创建列) @PhilippSander 可能你持久化实体的方式有问题? 我还没坚持,刚加了专栏!

以上是关于布尔字段始终为真的主要内容,如果未能解决你的问题,请参考以下文章

请求正文中的布尔参数在 NestJS api 中始终为真

如何为记录类型创建布尔类型的字段?

如何使用 django 表单/模型来表示字段之间的选择?

如何知道文本字段何时更改而不保存

当应该为真时,Android Studio 改造响应返回布尔值为假

根据状态变量进行条件 Yup 验证