"Tipo" has one "Profissão:"
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "id_profissao", nullable = false)
public Profissao getProfissao() {
return profissao;
}
When I tried to in datatable view data of a relation entities Tipo and Profissao related:
<p:dataTable var="lista" value="#{tipoBean.tipos}" id="tabelaTipos"
rows="10" paginator="true" widgetVar="tabelaTipos">
<p:column headerText="Profissão">
<h:outputText value="#{lista.profissao.nome}" />
</p:dataTable>
DAO:
Criteria cri = session.createCriteria(Tipo.class)
.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY)
.addOrder(Order.asc("nome"));
return cri.list();
I got this error widely discussed here: org.hibernate.LazyInitializationException: could not initialize proxy - no Session
So I implemented this using "Hibernate.initialize" way.
Criteria cri = session.createCriteria(Tipo.class)
.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY)
.addOrder(Order.asc("nome"));
List<Tipo> tipos = (List<Tipo>) cri.list();
for (Tipo t :tipos) {
Hibernate.initialize(t.getProfissao());
}
It worked but there's a better solution to it? I don't wanna use Eager solution. Any solutions?
Thanks!