Grails 将参数化SQL转换为HQL时出现问题

Grails 将参数化SQL转换为HQL时出现问题,grails,groovy,hql,Grails,Groovy,Hql,我们在Hibernate中使用GrailsGroovy,我的grails控制器中有一个类似这样的SQL查询 String markerCalcQuery = "select sum(trans_cnt) as t_count, location from map2_data where "+ "fdate between (:datefrom) and (:dateto) "+ "and res_id=:res_id "+ "group by locat

我们在Hibernate中使用GrailsGroovy,我的grails控制器中有一个类似这样的SQL查询

    String markerCalcQuery =
    "select sum(trans_cnt) as t_count, location  from map2_data where "+
    "fdate between (:datefrom) and (:dateto) "+
    "and res_id=:res_id "+
    "group by location ;"

   res_row=gurculsql.rows(markerCalcQuery,[res_id:res_id,datefrom:format_dateprevious,dateto:format_datenow]);
如何将此查询更改为HQL,我没有域类
map2_data
,但我想知道是否需要创建它以将此查询转换为HQL,或者我可以不这样转换它(应该使用基于gorm的实现)

我现在有很多为MySQL编写的查询,我需要将它们转换为HQL

我现在已经创建了域类
map2\u data
。那么,上面的查询将如何更改(如何决定函数…使用findallby、createcriteria等)

问候,


Priyank

HQL在Hibernate实体上工作。如果没有实体映射表,则不能在此表上使用HQL。这就是ORM的原理:使用对象表示表。

如果map2_数据表未映射到域,您如何对程序中的t_计数和位置等字段执行操作(读和写)?这些是摘要表,我有插入脚本,可以从其他表(如tansaction、user、resource、,等等。如果计划将所有sql查询转换为hql查询,则必须创建一个实体以映射到map2_数据表。否则,没有其他方法(通过hql)插入/更新/读取此表中的记录。我如何使用map2_数据作为域类编写此查询。如果map2_数据是域类,hql将与您上面提到的sql查询相同。sql查询中使用的所有子句都是有效的hql子句。只需将表名和列更改为实体名和属性我的主要目标是使查询通用化,以便它们与MySQL、Oracle、MSSQL和Hadoop等其他供应商一起工作。。因此,我需要对查询进行概括。我该怎么做…?我不知道你到底是什么意思。如果选择Hibernate作为以不可知数据库的方式访问数据库的方法,请对此表执行相同的操作:将其映射为实体,并将SQL查询转换为HQL。如果您不想使用Hibernate访问该表,那么根据应用程序的配置,使用DAOFactory返回包含MySQL查询的MySQLDAO、包含Hadoop查询的HadoopDAO等。