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)すると、実際の問題が何であるかをよりよく示す別の例外が発生するはずです。クラスに権限があることを確認してくださいconstraintsUser特に、GORM プロパティはデフォルトで null 非許容であるため、Userを持たないを保存できるようにしたい場合Profileは、 の制約を追加する必要があることに注意してくださいprofile(nullable:true)

于 2012-10-21T20:46:20.783 に答える