我有一个名为LocType的类,它具有30个元素,并且与LocProfile的@OneToMany关系具有40个元素。我必须做一些计算来确定一旦用户选择了一个位置就应该关联哪个LocTypeProfile,因此它需要在jsp端可用。
如果我像下面那样定义Eager初始化的关系,当我从LocType检索元素时,它为我提供了30个元素,其中实例存储在列表中一对多关系-这就是我想要的行为。
@OneToMany(fetch = FetchType.EAGER, mappedBy = "LocType ", cascade = CascadeType.ALL)
private List<LocTypeProfile > locTypeProfiles;
现在,如果出于良好实践的考虑,我将映射更改为延迟加载
@OneToMany(mappedBy = "creditTypes")
并尝试使用提取进行查询
select lt from LocTypes lt left join fetch lt.locTypeProfiles
我得到40个元素,其中的数据被展平。
我的问题是在这种情况下是否有办法复制Eager初始化的行为?
当执行join fetch
一个OneToMany
需要使用的关系distinct
在select语句,否则实体将针对每行创建获取。
尝试:
select distinct lt from LocTypes lt left join fetch lt.locTypeProfiles
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句