エラスティック検索プラグイン 0.18.7.1-SNAPSHOT で grails 2.0.0 M1 を使用しています。
これをインストールでき、デフォルトの構成を使用して正常に動作していることを確認できます。また、ドメイン オブジェクトが作成され、DBBootStrap.groovy ファイルからインデックスに正常に追加されていることも確認できます。
でも...
(Bootstap スクリプトが正常に実行された後) Web レイヤーからドメイン オブジェクトのみを (保存せずに) 作成しようとすると、次のエラーが発生します。
def testco = new Company(name:"test");
Line | Method
->> 13 | registerCustomEditors in org.grails.plugins.elasticsearch.conversion.CustomEditorRegistar
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
| 38 | test in com.tempism.company.CompanyController
| 886 | runTask . . . . . . . in java.util.concurrent.ThreadPoolExecutor$Worker
| 908 | run in ''
^ 619 | run . . . . . . . . . in java.lang.Thread
さらに調査すると、関連する部分が ... であるスタック トレースが明らかになります。
java.lang.NullPointerException
at groovy.lang.MetaClassImpl.addToAllMethodsIfPublic(MetaClassImpl.java:2975)
at groovy.lang.MetaClassImpl.addProperties(MetaClassImpl.java:2954)
at groovy.lang.MetaClassImpl.initialize(MetaClassImpl.java:2918)
at groovy.lang.ExpandoMetaClass.initialize(ExpandoMetaClass.java:468)
at org.codehaus.groovy.reflection.ClassInfo.getMetaClassUnderLock(ClassInfo.java:166)
at org.codehaus.groovy.reflection.ClassInfo.getMetaClass(ClassInfo.java:182)
at org.codehaus.groovy.runtime.metaclass.MetaClassRegistryImpl.getMetaClass(MetaClassRegistryImpl.java:242)
at org.codehaus.groovy.runtime.InvokerHelper.getMetaClass(InvokerHelper.java:751)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.createCallConstructorSite(CallSiteArray.java:71)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallConstructor(CallSiteArray.java:54)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractCallSite.java:182)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractCallSite.java:190)
at org.grails.plugins.elasticsearch.conversion.CustomEditorRegistar.registerCustomEditors(CustomEditorRegistar.groovy:13)
at org.codehaus.groovy.grails.web.binding.GrailsDataBinder.registerCustomEditors(GrailsDataBinder.java:182)
at org.codehaus.groovy.grails.web.binding.GrailsDataBinder.registerCustomEditors(GrailsDataBinder.java:263)
at org.codehaus.groovy.grails.web.binding.GrailsDataBinder.createBinder(GrailsDataBinder.java:287)
at org.codehaus.groovy.grails.web.binding.DataBindingUtils.createDataBinder(DataBindingUtils.java:238)
at org.codehaus.groovy.grails.web.binding.DataBindingUtils.bindObjectToDomainInstance(DataBindingUtils.java:169)
at org.codehaus.groovy.grails.web.binding.DataBindingUtils.bindObjectToDomainInstance(DataBindingUtils.java:112)
at org.codehaus.groovy.grails.plugins.web.api.ControllersDomainBindingApi.initialize(ControllersDomainBindingApi.java:57)
at com.tempism.company.Company.<init>(Company.groovy)
grails では比較的新しいので、ドメイン オブジェクト/DataBinding の作成が DBBootStrap コンテキストでどのように機能するかはわかりませんが、他のコンテキスト (Service/Controller.
どんなアイデアでも大歓迎です。
乾杯。
アップデート...
//works
def co = new Company();
co.name = "hello"
co.save();
//doesn't work
new Company(name:"hello2").save();