1

我正在尝试将默认 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

任何的想法?

4

1 回答 1

1

我们需要见到你BootStrap才能确定,但​​我怀疑这是因为你正在做类似的事情

def user = new User(....).save()
def role = new Role(....).save()
UserRole.create(user, role)

并且您的 newUser验证失败(导致save返回null)。

如果你使用save(failOnError:true)你应该得到一个不同的异常,更好地表明真正的问题是什么。检查您constraints在您的User类中是否具有权限,特别注意 GORM 属性默认情况下不可为空,因此如果您希望能够保存User没有 a 的 a Profile,则需要添加profile(nullable:true).

于 2012-10-21T20:46:20.783 回答