【发布时间】:2014-11-17 18:11:14
【问题描述】:
我对“延迟加载”有一个疑问。
使用@LazyCollection(LazyCollectionOption.FALSE)和@OneToMany(fetch = FetchType.EAGER)有什么区别?
在我的应用程序中,我使用了两个列表,但如果我以这种格式使用:
@OneToMany(mappedBy = "consultaSQL", orphanRemoval = true, fetch = FetchType.EAGER,
cascade = CascadeType.ALL)
private List<ParametroSQL> parametros;
@OneToMany(mappedBy = "consulta", orphanRemoval = true, fetch = FetchType.EAGER,
cascade = CascadeType.ALL)
private List<Contato> contatos;
我有这个错误:
原因:org.hibernate.loader.MultipleBagFetchException: 不能同时获取多个包
我知道这是因为 Hibernate 不允许我同时加载两个列表。但如果我使用这种格式:
@LazyCollection(LazyCollectionOption.FALSE)
@OneToMany(mappedBy = "consultaSQL", orphanRemoval = true,
cascade = CascadeType.ALL)
private List<ParametroSQL> parametros;
@LazyCollection(LazyCollectionOption.FALSE)
@OneToMany(mappedBy = "consulta", orphanRemoval = true,
cascade = CascadeType.ALL)
private List<Contato> contatos;
效果很好。
对不起我的英语 谢谢
【问题讨论】:
标签: java hibernate jsf lazy-loading