0

Mongodb Morphia Plugin (v.0.7.8) を使用して Grails アプリで Mongodb を使用しようとしています。com.google.code.morphia.annotations.Entity アノテーションを使用して、ドメインクラス ( grails-app/mongo フォルダー内にない) にアノテーションを付けました。

import com.google.code.morphia.annotations.Entity

@Entity("Question")
class Question {
    Integer order
    String question
}

今、新しいエンティティをコントローラーのデータベースに保存しようとしています:

def index() {
    def q = new Question()
}
q.save()

しかし、それは HTTP 500 エラーを引き起こします:

java.lang.IllegalStateException
Method on class [Question] was used outside of a Grails application. If running in the context of a test using the mocking API or bootstrap Grails correctly.

私は何を間違っていますか?

編集:

ドメイン クラスを grails-app/mongo に移動し、@Entity アノテーションを削除しました。エラーは消えましたが、データベースはまだ空ですか?

編集2:

今私は得る:

URI
/Survey/survey/index
Class
java.lang.NoSuchMethodException
Message
survey.Survey.<init>()

このプラグインは深刻なバグがあるか、クイックスタートのマイクロ例が示唆するほどセットアップが簡単ではありません。繰り返しますが、私は何を間違っていますか?

4

2 に答える 2

0

できることは次のとおりです。

まず、私のように GORM MongoDB から来た場合は、DataSource.groovy を確認してみてください。mongo{} を mongodb{} に置き換えて、mongodb-morphia が機能するようにします。

2番目: クラスを編集して、次のようにします。

import com.google.code.morphia.annotations.Entity
@Entity
class Question {
   ///your code...
}

他のオブジェクトから拡張しない限り、 @Entity('Quest') を追加する必要がないことに気付きました。

編集: さて、あなたのエラー メッセージとコードを見た後、コントローラー アクション メソッドの外で q.save() を呼び出していることに気付きました。

これはあなたのコードでした:

def index() {
    def q = new Question()
}
q.save()

してみてください:

def index() {
    def q = new Question()
    q.save()
}
于 2012-09-24T10:56:35.720 に答える
0

そのプラグインの使用方法に関するユーザーガイドは次のとおりですhttp://jkuehn.github.com/gorm-mongodb/guide/2.%20Quickstart.html

サンプル アプリケーションは、https://github.com/jkuehn/gorm-mongodbから入手できます。

于 2012-06-14T20:41:39.423 に答える