Join Objeto

3 respostas
F

Galera to usando o hibernate mas to tendo um pequeno problema talvez por desconhecer os recurços que o framework oferece… fo Fato e o seguinte:

Tenho um objeto :

configuracao que contem um objeto equipamento… fato e que eu tenho que trazer uma lista de configuracao onde a propriedade “modelo” do equipamento seja like “% algum modelo %”

algo parecido com o que esta abaixo…

public List<Configuracao> consultaconfListLikeModelo(String modelo){
		Session session = HibernateUtil.getSessionFactory().getCurrentSession();
		session.beginTransaction();
		// Seleciona-se os dados via HQL (hibernate query language)
		Criteria criteria = session.createCriteria(Equipamento.class); 
		criteria.add(Restrictions.ilike ("equip.modelo", modelo, MatchMode.ANYWHERE));
		List<Configuracao> confs = criteria.list();
		session.getTransaction().commit();
		return confs;
	}

3 Respostas

F

Resolvi da seguinte forma mas acho q nao ta legal…

faço uma busca nos equipamentos usando o ilike colocando o retorno em uma Collection e passando como parametro…

public List<Configuracao> consultaconfListLikeModelo(Collection<Equipamento> modelo){
		Session session = HibernateUtil.getSessionFactory().getCurrentSession();
		session.beginTransaction();
		// Seleciona-se os dados via HQL (hibernate query language)
		Criteria criteria = session.createCriteria(Configuracao.class); 
		criteria.add(Restrictions.in("equi", modelo) );
		List<Configuracao> confs = criteria.list();
		session.getTransaction().commit();
		return confs;
	}

se alguem souber de outra forma…

F

Usei outra forma :

public List<Configuracao> consultaconfListLikeModelo(String modelo){
		Session session = HibernateUtil.getSessionFactory().getCurrentSession();
		session.beginTransaction();
		// Seleciona-se os dados via HQL (hibernate query language)
		Criteria criteria = session.createCriteria(Configuracao.class); 
		criteria.createAlias("equi", "e");   
		criteria.add(Restrictions.ilike("e.descricao", modelo, MatchMode.ANYWHERE));
		List<Configuracao> confs = criteria.list();
		session.getTransaction().commit();
		return confs;
	}

Porem esta trazendo varios registros onde deveria trazer somente um…

Alguem sabe pq ?

F

Descobri pq : a propriedade configuracoes(List do meu objeto Configuracao estava setado como FetchType.EAGER… se tivesse setato como LAZY traria somente um , porem nao carregaria os itens de configuração e realmente tem que trazer os itens. O que eu fiz foi isso :

Funciona perfeitamente , porem o java me informa que quando eu uso essa opçao criteria.setFetchMode(“configuracoes”, FetchMode.LAZY) o LAZY esta deprecado…

Alguem conhece alguma solução melhor :smiley: ?

Criado 26 de agosto de 2010
Ultima resposta 27 de ago. de 2010
Respostas 3
Participantes 1