GORM Lazy Loaded List的问题

时间:2011-05-04 13:09:49

标签: hibernate grails gorm

我目前遇到grails问题。我有一个包含List的类(Item)(hasMany = [users:User]),然后User是一个包含3个子类的类(SubUser1,SubUser2)。

问题是当我触摸包含用户列表的集合时,那里包含的对象都是User类型(而不是子类,它应该是正确的)。

这个问题无法知道,集合中的用户是哪种类型。

你以前遇到过这个问题吗?你知道怎么解决这个问题吗?

谢谢, 尼古拉斯

以下是相关的代码:

/*** Domain Class ***/
class Item {
   List<User> users = []
   static hasMany = [users : User]
}

class User {
   String username
}

class User1 {
   //Some other properties
} 

/*** On the view ***/
item.users
     --> Returns a list of User_$javassist$ and 
     not of type User1 as it should be

1 个答案:

答案 0 :(得分:0)

我有一个在grails中使用这样的多态的项目。我没有这个问题。我有一个名为Media的超类,以及像BookMovie

这样的子类

如果我这样做Media.all.each { it instanceof Movie ? println 'is movie' : 'is not movie' }会给我预期的输出,其中一些是电影,一些不是电影。

修改

尝试使用此结构

class Item {
   static hasMany = [users : User]
   static mapping = {
       tablePerHierarchy false
   }

}

class User {
   String username
}

class User1 extends User {
   //Some other properties
}