Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/grails/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql GORM对以max前缀开头的字段有问题还是对浮点字段有问题_Mysql_Grails_Gorm - Fatal编程技术网

Mysql GORM对以max前缀开头的字段有问题还是对浮点字段有问题

Mysql GORM对以max前缀开头的字段有问题还是对浮点字段有问题,mysql,grails,gorm,Mysql,Grails,Gorm,我有一个域类,它包含两个字段:minscale,和maxscale: class TeamRuleAverageStatic extends TeamRule { Float minscale; Float maxscale; } * 我在数据库中以minscale=0.5和maxscale=0.9 当我试图查询它时,我什么也没有得到: TeamRuleAverageStatic.findByMinscaleAndMaxscale(new Float(0.5),new Fl

我有一个域类,它包含两个字段:
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
字段的查询非常有效

更新:

我使用
phmyadmin
作为GUI手动执行SQL查询的最佳实践

我也有同样的问题

当我将字段类型更改为
Double
时,它会工作怪异

事实上,我遇到的是一个奇怪的it问题。
FLOAT
类型有什么问题?

您的问题是由表示法
FLOAT
双值的性质引起的。
两者都用于表示浮点数,
float
表示单精度,
double
表示双精度数字

MySQL使用四个字节表示单精度值,八个字节表示双精度值

自以下日期起:

由于浮点值是近似值,而不是存储为精确值,因此在比较中尝试将其视为精确值可能会导致问题


您可以尝试使用
decimal
而不是
float
double
,因为
decimal
在内部表示为字符串以保证精确的精度。

这很奇怪。您使用的是哪个数据库?您能找出针对DB执行的sql查询并将其发布到这里吗?谢谢。MySQL数据库。是的,我尝试使用SQL查询,pb也是一样的。这似乎是一个SQL问题