Org.hibernate.QueryException: query specified join fetching, but the owner of the fetched assoc

4 respostas
D

Olá pessoal,

Tenho dois selects em HQL, para consulta no banco, a unica diferença entre um e outro é que no primeiro faço SELECT COUNT(*) e no segundo SELECT entidade.

Nessa consulta o hibernate me retorna:
org.hibernate.QueryException: query specified join fetching, but the owner of the fetched association was not present in the select list

public Integer count(Integer unidade, Integer prontuario) {		
		Map<String, Integer> paramsInt = new HashMap<String, Integer>();		
			paramsInt.put("unidade", unidade);
			paramsInt.put("idPasta", prontuario);
		return ((Long) this.session.createQuery("SELECT COUNT(*) FROM Pessoa as pessoa
		LEFT JOIN FETCH pessoa.alunoPastaIndividualList AS pasta WHERE pasta.escola.id = :unidade AND pasta.idPasta = :idPasta")
				.setProperties(paramsInt).iterate().next())
				.intValue();
	}

Já nesta a query é executa normalmente (a unica coisa diferente é o "SELECT COUNT(*)" que nesse caso não tem):
org.hibernate.QueryException: query specified join fetching, but the owner of the fetched association was not present in the select list

public Collection search(Integer unidade, Integer prontuario) {		
		Map<String, Integer> paramsInt = new HashMap<String, Integer>();		
			paramsInt.put("unidade", unidade);
			paramsInt.put("idPasta", prontuario);
		return this.session.createQuery("FROM Pessoa as pessoa
		LEFT JOIN FETCH pessoa.alunoPastaIndividualList AS pasta WHERE pasta.escola.id = :unidade AND pasta.idPasta = :idPasta")
				.setProperties(paramsInt).list();				
	}

Alguém sabe o que pode ser?

4 Respostas

R

Sim, se não me engano você não pode utilizar o * no JPQL, tem que usar seu alias, portanto troque de: "SELECT COUNT(*) FROM Pessoa as pessoa ..." para "SELECT COUNT(pessoa) FROM Pessoa as pessoa ..."E veja se funciona.

D

Olá, obrigado pela resposta mas já tentei dessa forma também e não deu certo.
Estou procurando agora sobre esses plugins para a IDE que permitem testar a query, ideal seria se eu pudesse converter um sql em hql.

H

Utilizando esse pattern você pode testar suas JPQLs sem realizar deploy da aplicação: Como testar sua JPQL / HQL sem realizar Deploy.

D

Fera d+, obrigado pela ajuda.
Abraços.

Criado 22 de agosto de 2012
Ultima resposta 29 de ago. de 2012
Respostas 4
Participantes 3