No formulário de manutenção de Professores, o campo TITULACAO é um ComboBox com todas as titulações cadastradas e ao ser selecionado me disponibiliza o ID da titulação. Como passei a usar o Hibernate, o atributo Titulação passou de Integer para Objeto Titulação. Como faço para usar o Get/Set da Titulacao sendo este um Objeto e o que retorna ou é enviado para o formulário é um Integer?
Vc tb pode fazer isso utilizsando linkedInvocation, do tipo
tit = professor.getPfr_titulacao().getTtl_id();
F
FlavioMaia
Interessante essa solução… vou implementar e testar.
public List getListaProfessores() throws SistemaException {
List<Professor> todosProfessores = new ArrayList();
try {
Session session = ConexaoHibernate.getSession();
Query select = session.createQuery("from bean.Professor as professor order by professor.pfr_nome");
todosProfessores = select.list();
session.close();
}
catch (Exception ex){
throw new SistemaException("ProfessorDao","getListaProfessor","Não foi possível buscar lista Professor Cadastrados no banco de dados.\n" + ex.getMessage(), "query");
}
return todosProfessores;
}
Como já mencionei anteriormente, eu passei a implementar o Hibernate no meu projeto. Preciso confirmar se sempre que executar um Query no bean.Professor ele trará automaticamente o bean.Titulação, em função do “many-to-one”, ou preciso fazer o Join Titulacao na query?
rodrigoallemand
FlavioMaia:
Como já mencionei anteriormente, eu passei a implementar o Hibernate no meu projeto. Preciso confirmar se sempre que executar um Query no bean.Professor ele trará automaticamente o bean.Titulação, em função do “many-to-one”, ou preciso fazer o Join Titulacao na query?
No hibernate existe uma politica de carregamento das informações de referencia, chamada de LazyLoading. Com isso, se vc tem, Pedido HAS-A Set e o lazy da entidade Pedido está como True, assim que vc fizer o getItensPedido(), ele executará a query e carregará as informações, CASO A SESSÃO AINDA ESTEJA VÁLIDA!!!
Verifique a configuração do seu lazy…
F
FlavioMaia
Complementando o item anterior, ao implementar o código abaixo:
Olá Rodrigo!
Acessei os links mencionados por você e como utilizo DAO, coloquei em comentário a linha que fecha a sessão e funcionou.
try {
Session session = ConexaoHibernate.getSession();
Query select = session.createQuery("from bean.Professor as professor order by professor.pfr_nome");
todosProfessores = select.list();
//session.close();
}
Você comentou em configurar o Lazy para true, infelizmente não entendi como colocar isso no Professor.hbm.xml:
<classname="Professor"table="professor"><!-- Identificador da classe --><idname="pfr_id"><generatorclass="increment"/></id><!-- Propriedades da classe --><propertyname="pfr_matricula"/><propertyname="pfr_nome"/><propertyname="pfr_qtdHoras"/><many-to-onename="pfr_titulacao"class="bean.Titulacao"column="pfr_titulacao"/></class>
Obrigado pela atenção.
N
Nuno_silva1
Boas
alguem me pode dar uma ajuda nisto?
estou a fazer loading de um objecto com uma relação de many to many e tenho sempre este erro…
Hibernate: select dbartigos0_.id as id0_0_, dbartigos0_.descricao as descricao0_0_, dbartigos0_.observacoes as observac3_0_0_, dbartigos0_.quantidade_existente as quantidade4_0_0_, dbartigos0_.quantidade_ideal as quantidade5_0_0_, dbartigos0_.quantidade_disponivel as quantidade6_0_0_, dbartigos0_.peso as peso0_0_, dbartigos0_.volume as volume0_0_, dbartigos0_.inventario as inventario0_0_, dbartigos0_.situacao as situacao0_0_, dbartigos0_.etiqueta as etiqueta0_0_ from DBARTIGOS dbartigos0_ where dbartigos0_.id=?
Hibernate: select dbdepartam0_.DBDEPARTAMENTO_ID as DBDEPART1_0_, dbdepartam0_.DBARTIGOS_ID as DBARTIGOS2_0_ from DBDEPARTAMENTO_TO_DBARTIGOS dbdepartam0_ where dbdepartam0_.DBDEPARTAMENTO_ID=?
Exception in thread "AWT-EventQueue-0" org.hibernate.HibernateException: CGLIB Enhancement failed: fact.dbdepartamento
at org.hibernate.proxy.pojo.cglib.CGLIBLazyInitializer.getProxy(CGLIBLazyInitializer.java:96)
at org.hibernate.proxy.pojo.cglib.CGLIBProxyFactory.getProxy(CGLIBProxyFactory.java:49)
at org.hibernate.tuple.entity.AbstractEntityTuplizer.createProxy(AbstractEntityTuplizer.java:379)
at org.hibernate.persister.entity.AbstractEntityPersister.createProxy(AbstractEntityPersister.java:3455)
at org.hibernate.event.def.DefaultLoadEventListener.createProxyIfNecessary(DefaultLoadEventListener.java:257)
at org.hibernate.event.def.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:191)
at org.hibernate.event.def.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:103)
at org.hibernate.impl.SessionImpl.fireLoad(SessionImpl.java:878)