0

私は次のものを持っています:

def userInstance=User.findAll("from User u where u.merchant is not null and u.merchant.id = ? and u.authorities.authority.contains('ROLE_MERCHANT')", merchantId)

そして、次のエラーが発生します。

org.hibernate.hql.ast.QuerySyntaxException: unexpected AST node: ( near line 1, column 121 [from com.testing.tests.User u where u.merchant is not null and u.merchant.id = ? and u.authorities.authority.contains('ROLE_MERCHANT')]
    at $Proxy20.createQuery(Unknown Source)
    at testing.admin.UserService.findByMerchantId(UserService.groovy:14)

特定の役割を持つユーザーのみを返すにはどうすればよいですか?

ありがとう

4

1 に答える 1

5

のデフォルトの実装を見るUser#getAuthoritiesと、プロパティ自体が動的ファインダー呼び出しで実装されていることがわかります。

UserRole.findAllByUser(this).collect { it.role } as Set

authoritiesしたがって、HSQLクエリで参照することはできませんが、UserRoleアソシエーションドメインクラスに対して特定の役割を持つユーザーに複数の方法でクエリを実行できます。

def users = UserRole.withCriteria {
   role{
       eq 'authority', 'ROLE_SOMETHING'
   }
   projections{
      property 'user'
   }
}

また

def users = UserRole.findAllByRole(domainRole)?.user
于 2012-11-06T13:11:59.347 に答える