我有一个包含两个字段的域类:minscale
和 maxscale
:
class TeamRuleAverageStatic extends TeamRule {
Float minscale;
Float maxscale;
}
*
我使用 minscale=0.5
和 maxscale=0.9
当我尝试查询它时,我什么也没得到:
TeamRuleAverageStatic.findByMinscaleAndMaxscale(new Float(0.5),new Float(0.9));
我再次尝试,但没有嵌入 maxscale :
TeamRuleAverageStatic.findByMinscale(new Float(0.5));
所以我得到了预期的结果。
我也尝试一下:
TeamRule.executeQuery('from TeamRule cu where cu.maxscale = ? and cu.minscale= ?', [new Float(0.9),new Float(0.5)])
// As TeamRule is the class mother of TeamRuleAverageStatic
问题仍然存在。
看来 MAXSCALE
是一个以前缀 'max' 开头的关键字或字段,因为 MINSCALE
字段的查询效果很好
更新:
我使用 phphmyadmin
作为 GUI 手动执行 SQL 查询最佳实践,
我也遇到同样的问题。
当我将字段类型更改为 Double
时,它就可以工作了! 奇怪
确实,这是我遇到的奇怪的 IT 问题。
FLOAT
类型有什么问题?
最佳答案
您的问题是由表示 float
和 double
值的性质引起的。
两者都用于表示 float ,其中 float
表示单精度数,double
表示 double 。
MySQL 使用 4 个字节表示单精度值,使用 8 个字节表示 double 值。
来自 MySql manual :
Because floating-point values are approximate and not stored as exact values, attempts to treat them as exact in comparisons may lead to problems.
您可以尝试使用decimal
而不是float
或double
,因为decimal
在内部表示为字符串保证准确的精度。
关于mysql - GORM 是否存在以最大前缀开头的字段问题或 Float 字段存在问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20212253/