Я использую Spring Security Plugin для управления членством и аутентификацией в своем приложении Grails.
Я пытаюсь связать класс домена пользователя с доменом профиля с помощью однозначного сопоставления.
Я добавил эти строки в User.groovy:
static hasOne = [userProfile:UserProfile]
static constraints = {
//...
userProfile unique:true
}
и в UserProfile.groovy:
User user
Увы, при вызове UseRole.create (user произошла ошибка),роль).
Существует несколько рекомендаций о том, как получить ту же функциональность, которую я ищу.В частности, я хочу связать любого пользователя с одним объектом профиля, чтобы расширить его.
Я хочу затем также добавить отношения один-ко-многим с сообщениями и другой таблицей ...
Спасибо.regards
PS: я получаю эту ошибку:
Настройка Spring Security UI ... 2011-03-08 12: 18: 51,179 [main] ОШИБКА context.GrailsContextLoader - Ошибка при выполнении начальной загрузки: nulljava.lang.NullPointerException в $ Proxy19.save (неизвестный источник) в com.dromedian.xxxxx.security.UserRole.create (UserRole.groovy: 32) в com.dromedian.xxxxx.security.UserRole $ create.call (неизвестный источник) в BootStrap $ _closure1.doCall (BootStrap.groovy: 20) в grails.util.Environment.evaluateEnvironmentSpecificBlock (Environment.java:251) в grails.util.Environment.executeForEnvironment (Environment.java:244) в grails.util.Environment..executeForCurrentEnvironment (Environment.java:220) в org.grails.tomcat.TomcatServer.start (TomcatServer.groovy: 212) в grails.web.container.EmbeddableServer $ start.call (неизвестный источник)на _GrailsRun_groovy $ _run_closure5_closure12.doCall (_GrailsRun_groovy: 158) в _GrailsRun_groovy $ _run_closure5_closure12.doCall (_GrailsRun_groovy) в _GrailsSettings_groovy $ _run_closure10.doCall (_GrailsSettings_groovy: 280) в _GrailsSettings_groovy $ _run_closure10.call (_GrailsSettings_groovy) в _GrailsRun_groovy $ _run_closure5.doCall (_GrailsRun_groovy: 149) при _GrailsRun_groovy $ _run_closure5.call (_GrailsRun_groovy) при _GrailsRun_groovy.runInline (_GrailsRun_groovy: 116) в _GrailsRun_groovy.this $ 4 $ runInline (_GrailsRun_groovy) при _GrailsRun_groovy $ _run_closure1.doCall (_GrailsRun_groovy: 59) в RunApp $ _run_closure1.doCall (RunApp.groovy: 33) в gant.Gant $ _dispatch_closure5.doCall (Gant.groovy: 381) в gant.Gant $ _dispatch_closure7.doCall (Gant.groovy: 415) в gant.Gant $ _dispatch_closure7.doCall (Gant.groovy) в gant.Gant.withBuildListeners (Gant.groovy: 427) в gant.Gant.this $ 2 $ с помощью BuildListeners (Gant.groovy) в gant.Gant $ this $ 2 $ сBuildListeners.callCurrent (неизвестный источник) в gant.Gant.dispatch (Gant.groovy: 415) в gant.Gant.this $ 2 $ (Gant.groovy) в gant.Gant.invokeMethod (Gant.groovy) в gant.Gant.executeTargets (Gant.groovy: 590) в gant.Gant.executeTargets (Gant.groovy: 589) Завершение работы контекста приложения ...
Конфигурация:
User.groovy (класс домена, созданный плагином безопасности Spring)
static hasOne = [userDetail:UserDetail]
static constraints = {
username blank: false, unique: true
password blank: false
userDetail unique:true
}
UserDetail.groovy
static hasOne = [user:User]
static belongsTo = User
BootStrap.groovy
//TODO temporary added - no for production or persistent db
def adminRole = new Role(authority: 'ROLE_ADMIN').save(flush: true)
def userRole = new Role(authority: 'ROLE_USER').save(flush: true)
String password = springSecurityService.encodePassword('password')
def testUser = new User(username: 'me', enabled: true, password: password)
testUser.save(flush: true)
if(testUser != null){
UserRole.create testUser, adminRole, true
}
Если я не позвоню
UserRole.create testUser, adminRole, true
, ошибки нет.Я попытался отладить, но я могу понять, где ошибка.