好的,我正在尝试找到所有具有给定角色的Employee
...但无论我尝试什么,我最终都会得到同样的异常......
enum Role {
SFC("State Fitness Coordinator"),
TRAINING("Training"),
DFC("District Fitness Coordinator"),
final String longName
private Role(String longName) {
this.longName = longName
}
}
class Employee {
static hasMany = [roles: Role]
static constraints = {
}
}
我试过的第一件事是Employee.findAllByRoles(Role.DFC)
然后我尝试了:
Employee.findAll("FROM Employee e WHERE e.roles IN (:role)", [role: [Role.DFC]])
以及
Employee.withCriteria {
'in'('roles', [Role.DFC])
}
全部导致
Class
java.sql.SQLException
Message
Missing IN or OUT parameter at index:: 1
任何方向都会非常感激。
答案 0 :(得分:2)
grails 2.3.8和H2
Employee.findAll("FROM Employee e WHERE :role in elements(e.roles) ", [role: Role.DFC.toString()])
这有效......即使我认为角色可以是一个简化所有操作的真实域
答案 1 :(得分:0)
我认为问题在于角色是一个枚举。你确定要把它作为枚举吗?
我建议将其作为一个类,因为可能会添加新角色。如果是这样,您可以使用引导程序或SQL查询轻松添加记录,而无需为生产创建新构建。
class Role {
String roleName
String description
}
在Bootstrap中:
Role sfc = new Role("SFC","State Fitness Coordinator")
Role sfc = new Role("TRAINING," "Training")
Role sfc = new Role("DFC", "District Fitness Coordinator")
N.B。请确保您没有使用 spring security plugin ,它具有自己的'角色'类。如果是,请更改“角色”的名称。类似于' EmployeeRole'