0

クラスを永続化するときに問題が発生します。Paginatorというインターフェースを使用するScraperというクラスがあります。実行時にインスタンス化されるPaginatorインターフェースのいくつかの実装があります。したがって、構造は次のようになります。

class Scraper {

    //some code

    Paginator paginator

    //more code

    def Scraper(Paginator paginator){
        this.paginator = paginator
    }
}

次に、paginatorインターフェイスの具体的な実装があります。たとえば、paginatorAとpaginatorBです。だから今私は次のことをしようとしています:

PaginatorA p = new PaginatorA()
Scraper s = new Scaper(p)

s.save(flush:true)

...そしてそれが得るものは:

Error Error executing script TestApp:
org.springframework.beans.factory.BeanCreationException: Error creating bean with name     'mongoDatastore': Cannot resolve reference to bean 'mongoMappingContext' while setting bean property 'mappingContext';
nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'mongoMappingContext': FactoryBean threw exception on object creation; nested exception is java.lang.NullPointerException (Use --stacktrace to see the full trace)

誰かがこれをどうするか教えてもらえますか?使用する具体的なPaginatorや、それを永続化する方法がわからないため、Mapperと関係があると思います。その場合、フレームワークに何をすべきかをどのように伝えることができますか?私は何時間も解決策を考え出そうとしましたが、本当にイライラしているので、どんな助けでも本当にありがたいです。

ところで、私は具体的な実装(PaginatorA)に対しても実装を試みました...これは、paginatorインターフェースと関係があるという私の仮定から、完全にうまく機能します。

ご回答ありがとうございます...

4

1 に答える 1

2

エラーは悪いです。おそらくそのために JIRA の問題を提起する必要がありますが、基本的に、コードには次の 2 つの問題があります。

  1. 永続クラスには、任意の JavaBean と同様に引数なしのパブリック コンストラクターが必要です。インターフェイスを取るコンストラクターを追加することで、もう 1 つ提供しません。

  2. Scraper クラスは、「ページネーター」プロパティを永続化しようとしないように永続化エンジンに指示するために、「ページネーター」を一時的としてマークする必要があります。これはカスタム インターフェイスであるため、永続化する方法がわかりません。

于 2012-11-29T14:13:54.457 に答える