Методы GORM недоступны в классах домена и службы.

ОБНОВЛЕНО:

Я установил Grails 2.0. У меня есть два класса домена: ApplicationConfiguration и City.
ApplicationConfiguration хранит поля по умолчанию и их значения. Город будет получать доступ к значению ApplicationConfiguration.

class ApplicationConfiguration {
    String myDefaultField
    String value

    static getMyDefaultCity(){
        def city_id  =  ApplicationConfiguration.findByMyDefaultField('city') .id
        def  cityName = ApplicationConfiguration.get(city_id ).value
    } 
}


Class City{
    def ApplicationConfiguration
    String city = ApplicationConfiguration.getMyDefaultCity()
}

В основном я не могу получить доступ к методам GORM из домена и службы, например 1) executeQuery() 2) find*()

И я получаю ошибку, как показано ниже

  ... 5 more
Caused by: org.hibernate.InstantiationException: could not instantiate test objectCity
        ... 5 more
Caused by: java.lang.reflect.InvocationTargetException
        ... 5 more
Caused by: groovy.lang.MissingMethodException: No signature of method: ApplicationConfiguration.findByMyDefaultFie
ld() is applicable for argument types: (java.lang.String) values: [city]
        at ApplicationConfiguration.getMyDefaultCity(ApplicationConfiguration.groovy:63)
        at City.<init>(City.groovy:28)

и когда я делаю ApplicationConfiguration.findByMyDefaultField('city') в своем контроллере, он работает нормально, методы GORM доступны в контроллерах

Тестовый пример для воспроизведения ошибки

1) Create a project using grails project wizard
2) Create two domain classes ApplicationConfiguration(String myDefaultField, String value) and City(String city) 
3) Do generate-all for  ApplicationConfiguration
4) Now add this "getMyDefaultCity()" with the definition method as shown above
5) Initialize the filed city in City domain class "String city = ApplicationConfiguration.getMyDefaultCity()"
6) Restart the application 

person n92    schedule 13.07.2012    source источник
comment
Кстати, вы перезапустили приложение и попробовали? я видел подобные ошибки после изменения классов домена и перед перезапуском   -  person aldrin    schedule 13.07.2012


Ответы (1)


Возможно, этот вопрос может быть вам полезен: name">Добавление бизнес-логики в доменный класс с использованием имени метода в стиле геттера

Использовали ли вы временное объявление для метода?

person predicador37    schedule 23.07.2012