Busca criteria help

2 respostas
Deluxe

galera
eu tenho 2 tabela...

1 tabela empresa

1 tabela categoria

elas 2 estao relacionado(1 para Todos), a empresa pode ter N categorias, mas somente uma categoria pode ter 1 empresa.. tudo bem..

No meu PojoEmpresa ta assim..

@OneToMany(mappedBy="empresa", fetch = FetchType.LAZY)
	@Cascade(CascadeType.ALL)
	private Collection<CategoriaPojo> categoria;

No meu PojoCategoria ta assim..

@ManyToOne(fetch = FetchType.EAGER)
	@JoinColumn(name="idEmpresa",
	insertable=true, updatable=true)
	@Fetch(FetchMode.JOIN)
	@Cascade(CascadeType.SAVE_UPDATE)
	private EmpresaPojo empresa;

Eu to fazendo uma busca pelo o nome da Empresa, se achar, ele lista todos os dados da empresa..
os dados da empresa eu consigo listar, mas nao consigo listar as categorias relacionadas aquela empresa que foi achada...

tipo
meu metodo para buscar somente o nome da empresa.. ta assim..

public List<EmpresaPojo> buscarEmpresa(String empresa) {
		
		DetachedCriteria criteria = DetachedCriteria.forClass(EmpresaPojo.class);

		criteria.add(Restrictions.ilike("nomeEmpresa", empresa));
		
		List<EmpresaPojo> lista = new ArrayList<EmpresaPojo>();
		
		lista = getHibernateTemplate().findByCriteria(criteria);
		
		return lista;
		
	  }

Entao.. se ele achar o nome digitado, ele vai me trazer nessa lista(return lista), todos os dados da empresa..
como faz pra trazer os dados das categorias relacionada a Emrpesa tb, que eh da outra tabela?
vlw

2 Respostas

Bravox

Então, não é preciso fazer mais nada na sua criteira o hibernate se encarrega de popular a lista (Collection categoria) para vc, como o FetchType do seu mapeamento é Lazy, ele vai buscar somente quando o método getCategoria for invocado.Com isso vc obtém todas as categorias para um objeto empresa.

berdam

o bravox ali tá certo, o mapeamento está como lazy, singnifica que somente os dados da categoria serão carregados quando vc acessar alguma propriedade da categoria que não seja a primary key

1. @OneToMany(mappedBy="empresa", fetch = FetchType.LAZY)  
   2.     @Cascade(CascadeType.ALL)  
   3.     private Collection<CategoriaPojo> categoria;
Criado 31 de julho de 2008
Ultima resposta 31 de jul. de 2008
Respostas 2
Participantes 3