Я смоделировал свои доменные классы в Grails с наследованием, как показано ниже.
abstract class Profile{
}
class Team extends Profile{
}
class User extends Profile{
}
class B{
static hasMany = [profiles: Profile]
}
Позже в контроллерах, когда я получаю все профили из класса B, в некоторых ситуациях я хотел бы передать некоторые профили Team или User, но я не могу, потому что я получаю java.lang.ClassCastException или GroovyCastException, хотя они сохраняются как группа или пользователь (с классом атрибута в базе данных ). Вот способы, которые я пробовал:
def team1 = b.profiles.toList()[0] as Team
def team1 = (Team)b.profiles.toList()[0]
Это работает, когда я не пишу какой-либо тип, просто использую его, как это обычно бывает в динамическом языке.
def team1 = b.profiles.toList()[0]
Но тогда я никогда не знаю, какой класс я использую. Есть ли в groovy или gorm способ передать родительский класс дочернему?