0

ユーザードメインとロールドメインがあり、ユーザー側で次のようにコード化された作業用のjoinTableがあります

static hasMany = [ roles: Role ]
...
static mapping = {
    table 'user_data'
    id column: 'employee_number', name: 'employeeNumber', generator: 'assigned', type: 'int'
    version false
    sort 'lastName'

    roles joinTable: [ name: 'user_role' ]

}

データベースにクエリを実行して、セキュリティ担当者の役割を持つすべてのユーザーを取得しようとしています

def roleInstance = Role.find { name == 'security_officer' }
def secList = User.findAll("from User as u where u.roles = :roleInstance", [roleInstance:roleInstance]) 

しかし、私はエラーが発生しています

Class: com.microsoft.sqlserver.jdbc.SQLServerException
Message: The value is not set for the parameter number 1.

私は何を間違っていますか?

4

3 に答える 3

0

ユーザーには多くのロールがあるため、クエリでは u.roles = roleInstance.Try を使用できません。 [ロールのリスト] で使用するか、次のクエリを試すことができます: def secList = User.findAll("from User as u where u .roles in (Role r where r.name=:roleInstance)", [roleInstance:roleInstance])

于 2015-10-16T16:52:34.323 に答える
0

Roles は hasMany の関係なので、次のようにするとうまくいくはずです。

def secList = User.findAll("from User as u where u.roles in (:roleInstance)", [roleInstance:[roleInstance]]) 
于 2015-10-16T16:46:57.040 に答える