Выпуск: При попытке использовать набор сбора в namedParameters из ExecuteQuery Он бросает: java.lang.ClassCastException java.util.LinkedHashSet не может быть cast to java.lang.LongЭто ошибка в Grails 3.1.11? Я использую Collection Set внутри ExecuteQuery и это вызывает java.lang.ClassCastException
Я могу преобразовать набор в список типов данных, но мне было интересно, почему это произошло в Grails 3.1.11, когда оно не появилось в Grails 2.2.3. Является ли это настоящей ошибкой в Grails 3.1.11?
// A Mocked up Domain
class AccountExample {
Long id
String name
}
//Code that works
List idList = [2L, 3L, 5L, 7L, 11L, 13L]
List accountNameList = AccountExample.executeQuery(
"SELECT name FROM AccountExample WHERE id IN :ids",
[ids:idList]
)
//Code that fails in Grails 3.1.11 but not in Grails 2.2.3
Set idSet = [2L, 3L, 5L, 7L, 11L, 13L]
List accountNameList = AccountExample.executeQuery(
"SELECT name FROM AccountExample WHERE id IN :ids",
[ids:idSet]
)
Часть трассировки стека
Caused by ClassCastException: java.util.LinkedHashSet cannot be cast to java.lang.Long
->> 36 | unwrap in org.hibernate.type.descriptor.java.LongTypeDescriptor
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
| 63 | doBind in org.hibernate.type.descriptor.sql.BigIntTypeDescriptor$1
| 90 | bind . . . . . . in org.hibernate.type.descriptor.sql.BasicBinder
| 286 | nullSafeSet in org.hibernate.type.AbstractStandardBasicType
| 281 | nullSafeSet . . in ''
| 67 | bind in org.hibernate.param.NamedParameterSpecification
| 616 | bindParameterValues in org.hibernate.loader.hql.QueryLoader
| 1901 | prepareQueryStatement in org.hibernate.loader.Loader
| 1862 | executeQueryStatement in ''
| 1839 | executeQueryStatement in ''
| 910 | doQuery . . . . in ''
| 355 | doQueryAndInitializeNonLazyCollections in ''
| 2554 | doList . . . . . in ''
| 2540 | doList in ''
| 2370 | listIgnoreQueryCache in ''
| 2365 | list in ''
| 497 | list . . . . . . in org.hibernate.loader.hql.QueryLoader
| 387 | list in org.hibernate.hql.internal.ast.QueryTranslatorImpl
| 236 | performList . . in org.hibernate.engine.query.spi.HQLQueryPlan
| 1300 | list in org.hibernate.internal.SessionImpl
| 103 | list . . . . . . in org.hibernate.internal.QueryImpl
| 311 | doCall in org.grails.orm.hibernate.AbstractHibernateGormStaticApi$_executeQuery_closure12
| 196 | doExecute . . . in org.grails.orm.hibernate.GrailsHibernateTemplate
| 140 | execute in ''
| 110 | execute . . . . in ''
| 303 | executeQuery in org.grails.orm.hibernate.AbstractHibernateGormStaticApi
| 892 | executeQuery . . in org.grails.datastore.gorm.GormStaticApi
| 1026 | executeQuery in org.grails.datastore.gorm.GormEntity$Trait$Helper
Если вы считаете, что это ошибка, вы могли бы быть лучше просто представить его в качестве такового проекта Grails. Скорее всего, это будет замечено кем-то в курсе, чем SO. https://github.com/grails/grails-core/issues – Gregg