나는 스프링 보안 클래스에 의해 전형적으로 자동 생성된다. + 하나의 쿼리에서 UserRoles (테이블 조인)와 함께 Roles를 선택하려고하므로 fetch : 'join'을 추가했습니다.Grails spring-security UserRole - 역할 가져 오기 : 'join'
class User {
def springSecurityService
String username
String password
static hasMany = [userRoles: UserRole]
Set<Role> getAuthorities() {
if (!this.id) {return []}
def userAuthorities= userRoles*.role
return userAuthorities
}
}
class UserRole implements Serializable {
User user
Role role
...
static mapping = {
table 'UserRole'
version false
id composite: ['role', 'user']
user column: 'UserID'
role column: 'RoleID', fetch: 'join'
}
class Role {
String authority
String description
static mapping = {
cache true
table 'Role'
id column: 'RoleID', generator: 'identity'
authority column: 'Authority'
description column: 'Description'
}
하지만 getAuthorities()에서 액세스 할 때만 아직 롤백이 지연되고 있습니다. 그리고 'N + 1'쿼리 성능 문제가 발생합니다. 왜 grails/hibernate는 fetch : 'join'지시어를 무시합니까? 어떻게 든 봄 보안에 달렸습니까? 나는 공식 문서를 해석으로
처음. –