惰性集合不包含代理。该集合本身是一个延迟加载的集合。这意味着当您从数据库中获取线程时,其回复列表将不会初始化。
调用
getReplies()将仅返回此未初始化的列表。只有在调用列表本身的方法(如
size()或
iterator())时,Hibernate才会通过执行SQL查询来初始化列表,该查询加载线程的所有回复的状态。
使用调试器检查集合中包含的内容不是一个好主意,因为调试器通常在背后的列表上调用方法,这会导致列表初始化。您可以检查是否使用
Hibernate.isInitialized(thread.getReplies())方法初始化了集合。
关于另一个问题:Hibernate用于将数据库行映射到对象。如果某个线程有回复,则Hibernate不会通过向您返回一个空列表来告诉您它没有任何线程。那将是一个严重的错误。如果您不想加载回复,只需不要在回复列表中调用任何方法。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)