在 Grails 中使用 Hibernate Criteria 进行查询时遇到了一个问题。
看一看:
def visitors = Client.withCriteria{
visits{
use ( TimeCategory ) {between('date',date,date+1.month-1)}
}
sizeGe("visits",params.from)
sizeLe("visits",params.to)
fetchMode("visits", FM.JOIN)
};
我只需要那些在from和to界限之间的月份访问次数的客户。
但现在size*限制适用于所有访问。因此,如果客户在本月访问一次,并且在上个月访问。如果我设置from=2,这个客户端将是结果。但它不应该在那里。
//UPD:sizeGe和sizeLe限制不像我预期的那样起作用。
从我的角度来看,它们应该在限制之间应用,但它们不是。
例如:
def client = new Client();
client.visits.add(new Visit(date:'2010-03-16'));
client.visits.add(new Visit(date:'2010-05-16'));
client.visits.add(new Visit(date:'2010-05-17'));
client.save();
然后我想如果:
- date = Date.parse('yyyy-MM','2010-05')
- params.from=2
条件应该返回这个客户,如果
- params.from = 3
不返回;
但它会返回,因为sizeGe被应用于所有访问,无论它有哪个日期。
// 结束更新。
让我知道是否还不清楚。
任何帮助表示赞赏。
谢谢,沃瓦。