Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hibernate GORM延迟加载列表的问题_Hibernate_Grails_Gorm - Fatal编程技术网

Hibernate GORM延迟加载列表的问题

Hibernate GORM延迟加载列表的问题,hibernate,grails,gorm,Hibernate,Grails,Gorm,我目前在grails方面遇到了一个问题。我有一个包含列表的类(项)(hasMany=[users:User]),然后User是一个包含3个子类(SubUser1,SubUser2)的类 问题是,当我触摸包含用户列表的集合时,其中包含的对象都是User类型(而不是子类,应该是正确的子类) 由于此问题,无法知道集合中的用户属于哪种类型 您以前是否遇到过此问题?你知道怎么解决这个问题吗 谢谢, 尼古拉斯 以下是相关代码: /*** Domain Class ***/ class Item { L

我目前在grails方面遇到了一个问题。我有一个包含列表的类(项)(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
/***域类***/
类项目{
列出用户=[]
静态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访问用户,以及如何确定他们是用户对象而非子类。目前,要查看列表中对象的真实类,我只是遍历集合并再次加载这些对象中的每一个。