2012-06-14 3 views
0

Я пытаюсь использовать Mongodb с приложением Grails через плагин Mongodb Morphia (v.0.7.8). Я аннотированный домен класса (который не внутри/папки Grails-приложение Монго) с com.google.code.morphia.annotations.Entity Аннотация:Grails/MongoDB Morphia Plugin:

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-приложение/Монго и удалить @Entity аннотацию. Теперь ошибка исчезла, но база данных по-прежнему пуста?

edit2:

теперь я получаю:

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

либо этот плагин сильно Bugged или это не так легко установить, как быстрый старт микро пример показывает, что это будет. снова: что я делаю неправильно?

ответ

0

Вот вещи, которые вы могли бы сделать:

Первые: Если вы пришли из GORM MongoDB, как и я, попробуйте проверить ваш DataSource.groovy. И замените mongo {} на mongodb {}, так что mongodb-morphia будет работать.

Второе: Редактировать ваш класс, и сделать это:

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

Я заметил, что нет необходимости добавлять @Entity («Вопрос»), если вы не простирающейся от другого объекта.

редактирует: Хорошо, после того, как я увидел ваше сообщение об ошибке и код, я просто понял, что-то, вы призывающую q.save() вне метода действия контроллера.

Это был ваш код:

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

Пожалуйста, попробуйте:

def index() { 
    def q = new Question() 
    q.save() 
} 
Смежные вопросы