sql - 使用GORM的动态FindAllBy方法时出现SQL错误-未设置#2

标签 sql grails gorm

我有那些 Realm 类:

class Person{
    String username
}

class Course {
    String code
    static hasMany = [events:Event]
}

class Event {
    Long id
    String name
    (...)

    static belongsTo = [course:Course, parallel:Parallel]
    static hasMany = [teachers: Person, students: Person,bought: Exchange, sold: Exchange]
}

我想做的是找到与学生类(class)相关的所有事件。我做了这个查询:
(...)
    println "User: ${person.username}"
    println "Course: ${course.code}"


    Set<Person> persons = []
    persons.add(person)

    def events = Event.findAllByCourseAndStudents(course, persons)
}

但这给我一个错误ERROR util.JDBCExceptionReporter - Parameter "#2" is not set; SQL statement:
我在这里想念什么?

最佳答案

查询Students中第二个参数的问题是它是1:M(一对多)关联,并且不支持使用动态查找器查询这些关联。

看一下GORM / Grails支持的各种查询的this quick overview,以更好地了解您可以使用哪些选项以及何时使用它们。

如您所见,在这种情况下,确实需要使用criteria:

def events = Event.createCriteria().list() {
  eq('course', course)
  students {
      eqId(person.id)
    }
  }
}

上面仅与一个人匹配,但是您可以对其进行进一步修改以根据需要使用一个人的列表。我将把练习留给您,以便您熟悉如何创建和使用标准。

关于sql - 使用GORM的动态FindAllBy方法时出现SQL错误-未设置#2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26622030/

相关文章:

mysql - 我怎样才能加入两个表并动态做数据透视

grails - Spring Security 正在重定向到生产服务器上的 localhost

grails - Grails:如何从域中选择特定值

mongodb - Grails GORM具有与MongoDB不一致的许多关联,当尝试获取子记录时,有时会获取记录,有时却不获取

hibernate - Hibernate 2级缓存不适用于GORM 6.1.11

mysql - 单个 SELECT 查询的 InnoDB 隔离级别

sql - 如何使用SQL脚本将数据从DBF导入到SQL?

grails - 如何在Grails中的列表中设置参数最大和偏移

mysql - 我在哪里可以找到 Linux 中 XAMPP 的 SQL 文件?

postgresql - Grails:是否可以查询PostgreSQL服务器版本?