Hibernate GORM延迟加载列表的问题
我目前在grails方面遇到了一个问题。我有一个包含列表的类(项)(hasMany=[users:User]),然后User是一个包含3个子类(SubUser1,SubUser2)的类 问题是,当我触摸包含用户列表的集合时,其中包含的对象都是User类型(而不是子类,应该是正确的子类) 由于此问题,无法知道集合中的用户属于哪种类型 您以前是否遇到过此问题?你知道怎么解决这个问题吗 谢谢, 尼古拉斯 以下是相关代码:Hibernate GORM延迟加载列表的问题,hibernate,grails,gorm,Hibernate,Grails,Gorm,我目前在grails方面遇到了一个问题。我有一个包含列表的类(项)(hasMany=[users:User]),然后User是一个包含3个子类(SubUser1,SubUser2)的类 问题是,当我触摸包含用户列表的集合时,其中包含的对象都是User类型(而不是子类,应该是正确的子类) 由于此问题,无法知道集合中的用户属于哪种类型 您以前是否遇到过此问题?你知道怎么解决这个问题吗 谢谢, 尼古拉斯 以下是相关代码: /*** Domain Class ***/ class Item { L
/*** 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
/***域类***/
类项目{
列出用户=[]
静态hasMany=[用户:用户]
}
类用户{
字符串用户名
}
类用户1{
//其他一些属性
}
/***论景观***/
项目.用户
-->返回用户_u$javassist$和
不是应该的User1类型
我有一个项目在grails中使用了这样的多态性。我没有这个问题。我有一个名为Media
的超类和Book
和Movie
如果我做一个Media.all.each{it instanceof Movie?println'is Movie':'is not Movie'}
会给我预期的输出,其中一些是Movie,一些不是Movie
编辑
试试这个结构
class Item {
static hasMany = [users : User]
static mapping = {
tablePerHierarchy false
}
}
class User {
String username
}
class User1 extends User {
//Some other properties
}
谢谢你的快速回答。你知道你目前使用的是哪个版本吗?(我使用的是1.3.6)另外,我刚刚检查过,User.all()工作正常。当我尝试加载item类的用户列表时,似乎出现了问题。也许您需要立即获取?我已经尝试过了,但没有任何效果。在使用之前,我只是将对象加载到集合中。但这只是一个肮脏的黑客行为,可能会损害应用程序的性能。也许如果我能看到你的类结构,我可以进一步帮助你。请你分享代码,通过Item class访问用户,以及如何确定他们是用户对象而非子类。目前,要查看列表中对象的真实类,我只是遍历集合并再次加载这些对象中的每一个。