2017-12-05 16 views
0

Grails 2.3.7(Maven)とJava 7を使用する従来のプロジェクトで作業していて、MongoDBデータベースに接続を追加する必要があります。既存の休止状態を維持します。Grails 2.3.7を使用してMongoDBドメインクラスを照会しようとすると、IllegalStateExceptionが発生する

私は私ののpom.xmlファイルに以下を追加しました:

plugins { 
    compile ':mongodb:3.0.2' 
    compile 'org.grails.plugins:mongodb:3.0.2'  
} 

(私は両方のそれを試してみました:BuildConfig.groovyファイルへ

<dependency> 
    <groupId>org.grails.plugins</groupId> 
    <artifactId>mongodb</artifactId> 
    <type>zip</type> 
    <version>3.0.2</version> 
</dependency> 

そして、これコンパイル 'org.grails.plugins:mongodb:3.0.2' line)

次のように私は、DB接続を設定している DataSource.groovyファイルで

grails { 
    mongodb { 
     host = "xxx.xxx.xxx.xxx" 
     port = "27017" 
     databaseName = "db" 
     username = "user" 
     password = "pass" 
    } 
} 

と私はそこに任意の値を変更した場合のGrailsアプリケーションも起動しないため、接続自体は、動作しているようです。

が、私はその後、Thingy.groovyが、簡単なドメインクラスを作成しました:私は、アプリを起動したときに

class Thingy { 

    String identifier 
    String description  

    static mapWith = "mongo" 

    static constraints = { 
    } 
} 

とし、そのクラスのメソッドへの呼び出しは、IllegalStateExceptionがスローされます:"Method on class [Thingy] was used outside of a Grails application. If running in the context of a test using the mocking API or bootstrap Grails correctly."。しかし、同じ場所で、他のデータソースを使用する古いDomainクラスのメソッドを呼び出すと、それらは魅力的に機能します。

また、サーバーを起動するときに、関連するかもしれない別の例外が表示されますが、どうすればよいか分かりません。ERROR - Error configuring dynamic methods for plugin [mongodb:3.0.2]: org/grails/datastore/mapping/query/api/BuildableCriteria java.lang.NoClassDefFoundError: org/grails/datastore/mapping/query/api/BuildableCriteria

MongoDBプラグイン3.0.3を使用してみましたが、同じ結果が得られました。

答えて

1

この回答https://stackoverflow.com/a/35710495/451420は私に手がかりを与えました。私も手動でgrails-datastore-coregrails-datastore-gormのバージョンを更新する必要がありました:

<dependency> 
    <groupId>org.grails</groupId> 
    <artifactId>grails-datastore-gorm</artifactId> 
    <version>3.1.4.RELEASE</version> 
</dependency> 
<dependency> 
    <groupId>org.grails</groupId> 
    <artifactId>grails-datastore-core</artifactId> 
    <version>3.1.4.RELEASE</version> 
</dependency> 

それが誰を助け場合、私はMongoDBのプラグイン(https://repo.grails.org/grails/plugins/org/grails/plugins/mongodb/3.0.3/mongodb-3.0.3.pom)のPOMファイル内<dependencies>を見ることで、使用するバージョンを見つけました

関連する問題