【发布时间】:2015-08-17 08:20:59
【问题描述】:
过去几天我一直在尝试解决这个问题,但我自己找不到答案,所以我希望有人能指出我的答案或自己帮助我。
问题是,假设我有 2 个不同的域 - 一个称为车辆,另一个称为车辆历史。现在,每次有人更改特定车辆时,都会在历史表中创建一个新对象/新条目。而我想要做的是进行查询,在特定日期之前获取每辆汽车的状态,而不修改查询返回的数据(排序列表等)。
因为我知道我不擅长解释我的问题,所以这里有一个例子:
id vehicle_id date_created state
1 1 12.08.2015 291
2 2 12.08.2015 212
3 1 14.08.2015 302
4 1 18.08.2015 201
第4列有什么数据并不重要,我们只知道我们不能根据它查询。
因此,目前,如果我进行了没有日期的查询,它应该只返回两个条目:2 和 4。如果我使用日期 16.08.2015 进行查询,它应该返回:2 和 3。
我发现其中一种工作方式是查询数据库并进行预测
projections {
max "dateCreated"
groupProperty "vehicle.id"
groupProperty "vehicle"
}
[而且我不能只使用投影来获取数据,因为我需要通过查询获得的值之一是整数]
获取要使用的最大“dateCreated”和“vehicle_id”(因为我需要vehicle_history_id 而不是vehicle_id)
def query = VehicleHistory.where {
vehicle.id = vId
dateCreated = dtCreated
}
但事实证明这太慢了,因为表中可能有超过 20,000 个条目。
我没有添加其余过滤器,因为它们似乎与当前问题无关。
【问题讨论】:
-
[and I can't just use projections to get the data, because one of the values that I need to get with the query is an integer]我没听懂 -
如果我尝试添加 GroupProperty 或属性,它会告诉我:错误:列必须出现在 GROUP BY 子句中或用于聚合函数中,如果我尝试添加 groupProperty('amount ') 或 groupProperty('id') 然后它只返回所有不同的
标签: hibernate grails grails-orm detachedcriteria