У меня есть служба, которая отвечает за создание соответствующей иерархии учетной записи при регистрации страницы успешно заполняли:Сохранение результатов класса Grails GORM/домена в `NullPointerException`
def userRole = Role.findByAuthority("ROLE_USER")
final account = new Account(email: command.email, password: command.password)
account.save(flush: true)
final publisher = new Publisher(name: command.name) //, account: account)
publisher.save(flush: true)
final accountRole = AccountRole.create account, userRole
Независимо от того, что я делаю, AccountRole.create account, userRole
терпит неудачу на этой линии:
static AccountRole create(Account account, Role role) {
def instance = new AccountRole(account: account, role: role)
instance.save() // throws NullPointerException
instance
}
Я попытался new AccountRole(account: account, role: userRole)
, но это тоже не удается, когда я вручную вызвать save
. Account
и AccountRole
- это классы, созданные (и слегка подстроенные) плагином Grails 3 Spring Security.
Вот StackTrace для AccountRole.create(...)
вызова, который не удается: информация
java.lang.reflect.InvocationTargetException: null
at grails.plugin.springsecurity.web.UpdateRequestContextHolderExceptionTranslationFilter.doFilter(UpdateRequestContextHolderExceptionTranslationFilter.groovy:64)
at grails.plugin.springsecurity.web.filter.GrailsAnonymousAuthenticationFilter.doFilter(GrailsAnonymousAuthenticationFilter.groovy:53)
at grails.plugin.springsecurity.web.authentication.logout.MutableLogoutFilter.doFilter(MutableLogoutFilter.groovy:62)
at grails.plugin.springsecurity.web.SecurityRequestHolderFilter.doFilter(SecurityRequestHolderFilter.groovy:58)
at grails.plugin.springsecurity.web.filter.DebugFilter.invokeWithWrappedRequest(DebugFilter.groovy:102)
at grails.plugin.springsecurity.web.filter.DebugFilter.doFilter(DebugFilter.groovy:69)
at grails.plugin.springsecurity.web.UpdateRequestContextHolderExceptionTranslationFilter.doFilter(UpdateRequestContextHolderExceptionTranslationFilter.groovy:64)
at grails.plugin.springsecurity.web.filter.GrailsAnonymousAuthenticationFilter.doFilter(GrailsAnonymousAuthenticationFilter.groovy:53)
at grails.plugin.springsecurity.web.authentication.logout.MutableLogoutFilter.doFilter(MutableLogoutFilter.groovy:62)
at grails.plugin.springsecurity.web.SecurityRequestHolderFilter.doFilter(SecurityRequestHolderFilter.groovy:58)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.NullPointerException: null
at package.AccountRole.create(AccountRole.groovy:48)
at package.RegistrationService.$tt__handleNewRegistration(RegistrationService.groovy:25)
Версия:
| Grails Version: 3.1.5
| Groovy Version: 2.4.6
| JVM Version: 1.8.0_73
Пожалуйста спасти меня от страданий! Я потратил несколько часов на это сейчас :(
Можете ли вы предоставить пример приложения с таким поведением? Я могу только вещь вашего класса домена не в правильном каталоге, поэтому на самом деле это не класс домена. –
Часть издателя этого примера кажется несущественной ... может потребоваться принять это. Я также никогда не использовал «final» для локальных объявлений переменных, особенно тех, которые будут меняться (как и при «сохранении»). – billjamesdev