布尔字段始终为真
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
,否则会影响代码的可移植性
这不是为所有条目设置true
或1
(当我添加字段时它设置null
(我删除它并再次创建列)
@PhilippSander 可能你持久化实体的方式有问题?
我还没坚持,刚加了专栏!以上是关于布尔字段始终为真的主要内容,如果未能解决你的问题,请参考以下文章