Tôi đã mô hình hóa các lớp miền của tôi trong Grails với kế thừa như được hiển thị bên dưới.Grails/Groovy miền lớp thừa kế đúc
abstract class Profile{
}
class Team extends Profile{
}
class User extends Profile{
}
class B{
static hasMany = [profiles: Profile]
}
Sau đó trong bộ điều khiển khi nhận được tất cả cấu hình từ lớp B trong một số trường hợp, tôi không thể vì tôi nhận được java. lang.ClassCastException hoặc GroovyCastException, mặc dù chúng được lưu dưới dạng Nhóm hoặc Người dùng (với lớp thuộc tính trong cơ sở dữ liệu). Dưới đây là những cách tôi đã thử:
def team1 = b.profiles.toList()[0] as Team
def team1 = (Team)b.profiles.toList()[0]
Nó hoạt động khi tôi không viết bất kỳ loại nào chỉ sử dụng như ngôn ngữ động thông thường.
def team1 = b.profiles.toList()[0]
Nhưng sau đó tôi không bao giờ biết mình đang sử dụng lớp nào. Có anyway trong groovy hoặc gorm để đúc lớp cha mẹ cho con?
Không có [phân biệt] (http://grails.org/doc/latest/ref/Database%20Mapping/discriminator.html) cho GORM phải lựa chọn giữa ' User' hoặc 'Team'. Làm thế nào nên gorm quyết định thực hiện để sử dụng? – krock
Nó lưu vào cùng một bảng trong cơ sở dữ liệu với thuộc tính lớp cho biết lớp đó là gì. – sgleser87