我想知道是否有一种方法可以禁用 nHibernate 中子记录的自动加载(对于一个:多个关系)。
我们可以轻松地关闭属性的延迟加载,但我想要的是禁用任何类型的自动加载(延迟和非延迟)。我只想通过查询加载数据(即 HQL 或 Criteria )
我仍然想在映射文件中定义父子记录之间的关系以方便 HQL 并能够加入父子实体,但我不希望子记录作为父记录的一部分加载,除非在父记录明确指出(通过急切获取等)。
示例:从数据库中获取部门记录不应从数据库中获取所有员工记录,因为它可能永远不需要。
此处的一种选择是将部门上的员工集合设置为延迟加载。这种方法的问题在于,一旦将对象提供给调用 API,它就可以“触摸”延迟加载属性,并且将从数据库中获取整个列表。
我尝试使用 'evict' - 断开对象,但它似乎并没有一直工作,也没有对对象进行深度驱逐。另外,它使用代理类抽象了延迟加载的属性类型,该代理类稍后会在我们试图通过反射对对象进行操作的代码中造成严重破坏,并且它会在对象上遇到未扩展的类型。
我是 nHibernate 的初学者,任何指示或帮助都会有很大帮助。