我正在尝试将默认的Spring Security用户域类的引用添加到另一个应该包含其他用户信息的类中。
class User {
transient springSecurityService
String username
String password
boolean enabled
boolean accountExpired
boolean accountLocked
boolean passwordExpired
Profile profile
...
...和...
class Profile {
static constraints = {
}
static belongsTo = [user : User]
String firstName
String lastName
}
从我读到的内容应该是它的工作方式,但我收到以下错误:
ERROR context.GrailsContextLoader - Error executing bootstraps: null
Message: null
Line | Method
->> 32 | create in com.app.UserRole
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
| 15 | doCall in BootStrap$_closure1
| 301 | evaluateEnvironmentSpecificBlock in grails.util.Environment
| 294 | executeForEnvironment in ''
| 270 | executeForCurrentEnvironment . . in ''
| 303 | innerRun in java.util.concurrent.FutureTask$Sync
| 138 | run . . . . . . . . . . . . . . in java.util.concurrent.FutureTask
| 886 | runTask in java.util.concurrent.ThreadPoolExecutor$Worker
| 908 | run . . . . . . . . . . . . . . in ''
^ 662 | run in java.lang.Thread
有什么想法吗?
答案 0 :(得分:1)
我们需要确定您的BootStrap
,但我怀疑这是因为您正在做的事情
def user = new User(....).save()
def role = new Role(....).save()
UserRole.create(user, role)
并且您的新User
验证失败(导致save
返回null
)。
如果你使用save(failOnError:true)
,你应该得到一个不同的例外,以更好地指出真正的问题是什么。检查constraints
类中是否具有正确的User
,特别注意GORM属性默认为不可为空,因此如果您希望能够保存User
,则不能使用Profile
如果有profile(nullable:true)
,您需要添加约{{1}}。