Преобразование наследования доменных классов Grails/Groovy

Я смоделировал свои доменные классы в 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 способ передать родительский класс дочернему?

6
задан sgleser87 11 July 2012 в 09:13
поделиться