【发布时间】:2020-06-07 16:34:55
【问题描述】:
模型:
@Entity
...
public class ScolProgressionPopulation {
...
@OneToMany(mappedBy = "population")
private List<ScolProgressionSemestre> progressions;
...
}
回购:
public interface ScolProgressionPopulationRepository extends JpaRepository<ScolProgressionPopulation, Long>
观点:
@Route(value = "progression", layout = ApplicationLayout.class)
@RouteAlias(value = "", layout = ApplicationLayout.class)
public class ProgressionView extends Div {
public ProgressionView(@Autowired ScolProgressionPopulationRepository scolProgressionPopulationRepository) {
var items = scolProgressionPopulationRepository.findAll();
// I try this..
Hibernate.initialize(items);
// and this ...
Hibernate.initialize(items.get(0));
// this works:
System.out.println("this is ok:" +items.size());
// but not this:
System.out.println("err, could not initialize proxy - no Session :" +items.get(0).getProgressions().size());
我尝试了很多方法来实现延迟加载,(添加@Transactional、Hibernate.initialize...)
但我总是以这个错误结束:
org.springframework.beans.factory.BeanCreationException: 错误 用名字创建bean 'nc.unc.scolarite.lmd.progression.gui.ProgressionView': 豆 通过构造函数实例化失败;嵌套异常是 org.springframework.beans.BeanInstantiationException:失败 实例化 [nc.unc.scolarite.lmd.progression.gui.ProgressionView]: 构造函数抛出异常;嵌套异常是 org.hibernate.LazyInitializationException:延迟初始化失败 角色集合: nc.unc.scolarite.lmd.progression.entities.ScolProgressionPopulation.progressions, 无法初始化代理 - 没有会话
PS:我不想使用 EAGER fetch。我想延迟加载数据。
【问题讨论】: