#exception #grails #groovy
#исключение #grails #groovy
Вопрос:
Это пример ошибки, которая была замечена в различных частях нашего кода и, похоже, является прерывистой.
Существует класс домена Grails следующим образом
class Widget {
Date futureTime
static namedQueries = {
current {
isNull("futureTime")
}
}
}
Затем выполните следующий код
List widgets = Widget.current.getAll()
for (Widget widget : widgets) {
// iterate...
}
Однако в строке выше for (Widget widget : widgets)
появляется следующее исключение:
org.quartz.JobExecutionException:
org.codehaus.groovy.runtime.typehandling.GroovyCastException:
Cannot cast object 'org.grails.orm.hibernate.cfg.NamedCriteriaProxy@2e04ce84'
with class 'org.grails.orm.hibernate.cfg.NamedCriteriaProxy'
to class 'com.company.Widget'
Этот код не изменился и работал ранее. Ошибка, похоже, приходит и уходит. Часто (но не всегда) ошибка устраняется с помощью чистой сборки.
- О чем эта ошибка?
- Есть ли способ предотвратить это?
Комментарии:
1. Я считаю, что вам нужно
Widget.current.list()
вместоWidget.current.getAll()
2. @dmahapatro: я думал, что list() и GetAll() идентичны (без предоставленных аргументов). Знаете ли вы разницу?
3. Они идентичны при применении к классу домена. Я скептически
getAll()
отношусь к тому, доступно ли в именованном запросе. Вы пробовали использоватьlist()
?4. @dmahapatro: я использовал
list()
, и это сработало, но проблема (как я уже упоминал) заключается в том, что это был существующий код, иgetAll()
он работал и раньше — проблема периодически. В коде есть и другие места, которые используютdomainClass.namedQuery.get()
иdomainClass.namedQuery.findBy...()
успешно. Но время от времени появляется ошибка, описанная выше.5. Какая версия Grails используется?