Sql Grails查询没有域关系的表上的左联接

Sql Grails查询没有域关系的表上的左联接,sql,grails,join,hql,Sql,Grails,Join,Hql,我是Grails的新手,这个问题困扰了我好几个小时。提前感谢您的帮助 我的问题是: 我有一个包含两个表的数据库 项目 喜欢 你可以猜到,用户有权喜欢一个项目。 在域类项目中没有关系(belongsTO、hasOne等) 在域类中相同喜欢 在数据库中,表LIKES有一个字段project\u id,但它未设置为外键。这样做的目的是正确的 现在,我需要使用grails执行一个本机SQL查询,它非常简单,并返回预期的结果 结果是所有项目都有喜欢或不喜欢的地方 以下是查询: 我找不到将此SQL查询转换

我是Grails的新手,这个问题困扰了我好几个小时。提前感谢您的帮助

我的问题是:

我有一个包含两个表的数据库

  • 项目
  • 喜欢
  • 你可以猜到,用户有权喜欢一个项目。 在域类项目中没有关系(belongsTO、hasOne等) 在域类中相同喜欢

    在数据库中,表LIKES有一个字段project\u id,但它未设置为外键。这样做的目的是正确的

    现在,我需要使用grails执行一个本机SQL查询,它非常简单,并返回预期的结果

    结果是所有项目都有喜欢或不喜欢的地方

    以下是查询:

    我找不到将此SQL查询转换为HQL的方法。 HQL似乎在域实例上工作,而域之间没有关系这一事实返回了一个错误,如“域项目没有Likes属性”,这是正确的

    有没有一种方法可以通过一个查询获得正确的结果,或者我需要通过编程方式执行两个查询并使用结果构建一个数组


    感谢您的帮助

    如果您的域类没有关系,您就不能使用
    HQL
    ,正如您所注意到的那样

    但是在Grails中,您可以使用
    groovy.sql.sql
    直接访问数据库。服务示例:

    class MyService {
      def dataSource
    
      void addNewRecord(String data) {
        groovy.sql.Sql sql = new Sql(dataSource)
        sql.execute("insert into my_table(my_anydata_clomn) values(sys.anyData.convertVarchar2(?))",[data])
      }
    
    }
    

    如您所注意到的,如果您的域类没有关系,您就不能使用
    HQL

    但是在Grails中,您可以使用
    groovy.sql.sql
    直接访问数据库。服务示例:

    class MyService {
      def dataSource
    
      void addNewRecord(String data) {
        groovy.sql.Sql sql = new Sql(dataSource)
        sql.execute("insert into my_table(my_anydata_clomn) values(sys.anyData.convertVarchar2(?))",[data])
      }
    
    }
    
    好的,它是这样工作的:)

    def数据源
    def getProjectList(){
    groovy.sql.sql=新的groovy.sql.sql(数据源)
    log.info(sql)
    log.info(“数据源”+数据源)
    def t=sql.rows(“选择*\n”+
    “来自项目\n”+
    “左连接\n”+
    “ON project.id=likes.project\u id\n”+
    “按喜欢排序。喜欢”)
    sql.close()
    返回t;
    }
    
    好的,它是这样工作的:)

    def数据源
    def getProjectList(){
    groovy.sql.sql=新的groovy.sql.sql(数据源)
    log.info(sql)
    log.info(“数据源”+数据源)
    def t=sql.rows(“选择*\n”+
    “来自项目\n”+
    “左连接\n”+
    “ON project.id=likes.project\u id\n”+
    “按喜欢排序。喜欢”)
    sql.close()
    返回t;
    }
    
    你能展示你的域类吗?你能展示你的域类吗?