Grails 带有日期对象的属性比较查询在属性不匹配时返回对象

Grails 带有日期对象的属性比较查询在属性不匹配时返回对象,grails,groovy,gorm,Grails,Groovy,Gorm,我在Grails中有一个域类,如下所示: class ActivityEvent { String activityName Date startTimeStamp Date endTimeStamp Client client static belongsTo = [client: Client] static constraints = { activityName nullable:false, b

我在Grails中有一个域类,如下所示:

class ActivityEvent
{
    String activityName 
    Date startTimeStamp
    Date endTimeStamp
    Client client

    static belongsTo = [client: Client]

    static constraints = {
        activityName            nullable:false, blank:false, size: 0..50
        startTimeStamp          nullable:false
        endTimeStamp            nullable:false
        client                  nullable:false
    }
}
其中客户端是另一个域类

在我的测试中,我将2个ActivityEvent对象保存到数据库:

Date now = new Date()
Client c = Client.get("1")
new ActivityEvent(client: c, activityName: "test", startTimeStamp: new Date(now.getTime()), endTimeStamp: new Date(now.getTime())).save(failOnError: true)
new ActivityEvent(client: c, activityName: "test", startTimeStamp: new Date(now.getTime()), endTimeStamp: new Date(now.getTime() + 5 * 60 * 1000)).save(failOnError: true)
现在,当我用c执行时,name是这个方法的参数

ActivityEvent.findAll {
    client == c &&
    activityName == name &&
    startTimeStamp == endTimeStamp
}
我的结果集是:

[
  ActivityEvent - name:test from Mon Oct 27 09:37:56 CET 2014 to Mon Oct 27 09:42:56 CET 2014,
  ActivityEvent - name:test from Mon Oct 27 09:47:56 CET 2014 to Mon Oct 27 09:47:56 CET 2014
]
如您所见,resultset包含一个ActivityEvent,其startTimeStamp不等于endTimeStamp,而我在查询中指定了它们需要相等

当我使用where运行相同的查询时

我得到一个异常org.hibernate.ununiqueresultexception:query没有返回唯一的结果:2,这并不奇怪,因为findAll还返回2个对象


我在查询中是否遗漏了什么或做错了什么?根据结果集的打印输出,一项不应该与查询匹配。

您可以尝试记录SQL查询并查看数据库。我这样做了,SQL查询结果正常,在MySQL Workbench中执行查询也正常。这很奇怪。如果在grails控制台中运行这些标准会怎么样?
ActivityEvent.where {
    client == c &&
    activityName == name &&
    startTimeStamp == endTimeStamp        
}.find()