У меня постоянно возникают проблемы с классами домена grails и с использованием действия запуска в приложении
похоже, что свойства и преобразования домена, похоже, неправильно воспринимают или обрабатывают признаки gorm правильно, и компилятор не работает (возникли проблемы со столбцами без достаточного количества типов данных или произошел сбой начальной загрузки, когда я загружаю значение в свойство, и оно говорит, что свойство не существует и т. д.
по сути, я не могу доверять при использовании приложения Application в среде IDE, и я не знаю, работают ли мои доменные классы или нет.
однако, если я перейду в режим gradle и загрузлю тот же код, он будет успешно скомпилирован и запущен!
У меня было это раньше, и я не знаю, является ли это ошибкой Grails или проблемой intellij с проектами Grails
когда я щелкаю правой кнопкой мыши по Приложению и запускаю командный терминал, он работает так:
"D:\Program Files\Java\jdk1.8.0_181\bin\java.exe" "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA 2018.3\lib\idea_rt.jar=7620:C:\Program Files\JetBrains\IntelliJ IDEA 2018.3\bin" -Dfile.encoding=UTF-8 -classpath C:\Users\willw\AppData\Local\Temp\classpath1951982944.jar lcm.network.app.Application
в моей последней итерации это выдает ошибку компиляции в начальной загрузке (в отличие от ошибки в классе домена) с этим
groovy.lang.MissingPropertyException: No such property: maintainer for class: com.softwood.domain.MaintenanceAgreement
at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.unwrap(ScriptBytecodeAdapter.java:66)
at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.setGroovyObjectProperty(ScriptBytecodeAdapter.java:547)
at lcm.network.app.BootStrap$_closure1.doCall(BootStrap.groovy:37)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:98)
at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325)
at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:264)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1034)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1099)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1034)
at groovy.lang.Closure.call(Closure.java:418)
at groovy.lang.Closure.call(Closure.java:412)
at grails.util.Environment.evaluateEnvironmentSpecificBlock(Environment.java:541)
at g
однако у этого класса домена это свойство действительно есть - см. Ниже
class MaintenanceAgreement extends Agreement {
String level
Map category = [:] //p1 to p5 and sla details
//static belongsTo = [serviceProvider : OrgRoleInstance, maintainer: OrgRoleInstance]
// implemented as unidirectional many to one ! mag point to org
static belongsTo = [maintainer: OrgRoleInstance]
static constraints = {
level nullable:false
//serviceProvider nullable:true
maintainer nullable:false //ref to maintainer party
category nullable:false
}
}
так что вы тратите часы, пытаясь разобраться в ложных проблемах в вашем коде, щелкнув правой кнопкой мыши на приложении.
я вынужден использовать grails bootRun - который в этом случае прекрасно запускает приложение
вы теряете некоторые детали при работе таким образом, поскольку трассировка стека для ошибок компиляции не так ясна.
кто-нибудь еще имел эту проблему с чертами gorm, обрабатывающими доменные объекты в intellij. Кроме того, как я могу «исправить» действие запуска приложения, чтобы запустить все правильные поведения, как это делает bootRun?