У меня есть эти отношения:Grails- Назначение связанный домен объектов в список против ArrayList
User{
...
hasMany = [tags: Tag]
}
Tag{
...
}
Некоторые, где в моей службы у меня есть этот код:
List<Tag> tags = user.tags
Но это не работает, я получаю эту ошибку:
org.codehaus.groovy.runtime.typehandling.GroovyCastException: Cannot cast object '[com.app.ext.Tag : 1]' with class
'org.hibernate.collection.PersistentSet' to class 'java.util.List' due to: groovy.lang.GroovyRuntimeException: Could not find matching constructor for: java.util.List(com.app.ext.Tag)
at ConsoleScript15.run(ConsoleScript15:6)
Если я изменю свой код на:
ArrayList<Tag> tags = user.tags
Работает так, как ожидалось! хотя ArrayList
является подклассом List
. Любые объяснения? версия
Grails: 2.3.0
'org.hibernate.collection.PersistentSet' - это' Set', а не '' List'. Поэтому понятно, почему он не может бросить кулак, но не имеет объяснения, почему его можно использовать для 'ArrayList'. Может быть, интерфейс против разницы в классе? –