晚上好,
我的数据库中有一个名为Events的表,它有两个字段:START_DATE和END_DATE数据类型Date。 我还创建了一个名为Event的域类,如下所示:
class Event{
Date startDate
Date endDate
static mapping = {
table 'events'
startDate column: 'start_date'
endDate column: 'end_date'
}
}
然后我创建了一个EventsService,它查询数据库中两个日期之间开始和结束的事件。目前我正在尝试使用以下代码获取在两个日期之间开始的事件:
String hql = "select e from Event e where e.startDate >= :startDateMin and e.startDate <= :startDateMax"
params.put("startDateMin",filter.getStartDateMin())
params.put("startDateMax",filter.getStartDateMax())
def results = Event.executeQuery(hql,params,config)
filter是我用来存储所有搜索条件的对象,config是存储sotring和paging参数的地图。
如果我只是尝试几乎所有事件,我将获得数据库中的所有事件,但是如果我尝试执行上面的查询,那么我得到这个例外:
Caused by: org.hibernate.QueryException: could not resolve property: startDate of: ipmt.modules.Event [select e from ipmt.modules.Event e where e.startDate >= :startDateMin and e.startDate <= :startDateMax]
我已经尝试了一切,我无法弄清问题是什么。我的数据库是OracleSQL。
答案 0 :(得分:1)
不幸的是,您的建议不起作用。但是我设法通过将两个变量的名称完全更改为eventStart和eventEnd并将它们映射到表的列来使其工作。我不知道出了什么问题,试图在屏幕上打印所有类的属性,看看是否在运行时注入了一个具有相同名称的字段,我搜索了继承树但没有。在我这样做之前,我曾尝试将数据库中的数据类型更改为Timestamp和各种奇怪的东西,但没有任何效果。因此,对于任何与grails 2.2.1有相同问题的人,首先尝试更改变量的名称。
非常感谢你的时间。
答案 1 :(得分:0)
看起来它没有拿起列名。我在GORM中看到过像这样的奇怪问题。
试试这个:
如果有帮助,请告诉我。