Erro chato no hibernate = duplicate association path

4 respostas
Q

Boa tarde a todos.
Estou com um erro no hibernate que é o seguinte:

org.hibernate.QueryException: duplicate association path: motor
	at org.hibernate.loader.criteria.CriteriaQueryTranslator.createAssociationPathCriteriaMap(CriteriaQueryTranslator.java:141)
	at org.hibernate.loader.criteria.CriteriaQueryTranslator.<init>(CriteriaQueryTranslator.java:80)
	at org.hibernate.loader.criteria.CriteriaLoader.<init>(CriteriaLoader.java:58)

a minha pesquisa esta assim:

criteria.add(Expression.eqProperty("placa", "ccx-1145"));
criteria.createCriteria("motor").add(Expression.eqProperty("numero", "1234"));
criteria.createCriteria("motor").add(Expression.eqProperty("peca", "547"));

ja tentei de tudo e nada de funcionar o relacionamento esta ok.
a pesquisa funciona quando retiro a ultima linha!

Qualquer ajuda é bem vida pessoal. t+ e obrigado

4 Respostas

V

Cara, tente a seguinte modificacao do seu codigo:

//criteria.createCriteria("motor").add(Expression.eqProperty("numero", "1234"));   
//criteria.createCriteria("motor").add(Expression.eqProperty("peca", "547")); 
//modificacao do seu codigo
criteria.createCriteria("motor").add(Expression.eqProperty("numero", "1234")).add(Expression.eqProperty("peca", "547"));

abracao

Q
Blz Vini Fernandes! Esta minha consulta é um filtro. E estes dados estão com ifs da vida. tipo
if (numero!=null)
{
  criteria.createCriteria("motor").add(Expression.eqProperty("numero", "1234"));    
} 

if (peca!=null)
{
  criteria.createCriteria("motor").add(Expression.eqProperty("peca", "547"));    
}
é nesta ora que tudo da errado, obrigado e t+
V

Entao cara, agora temos duas formas de resolver o problema:

if (numero!=null) {   
  criteria.createCriteria("motor").add(Expression.eqProperty("numero", "1234"));       
}   
  
else if (peca!=null) {   //inserindo um else 
  criteria.createCriteria("motor").add(Expression.eqProperty("peca", "547"));       
}

ou ainda

Criteria criteria = session.createCriteria(classe);
criteria.createCriteria("motor");//aqui voce cria uma UNICA criteria 
if (numero!=null)  {   
  criteria.add(Expression.eqProperty("numero", "1234")); // adicionando um criterio de pesquisa a sua criteria
}   
  
if (peca!=null) {   
  criteria.add(Expression.eqProperty("peca", "547"));// adicionando um segundo criterio de pesquisa a mesma criteria
}

ou voce pode adotar uma composicao das duas propostas acima!

abracao

Q

Funcionou Vini Fernandes!
muito obrigado e t+
8)

Criado 9 de fevereiro de 2009
Ultima resposta 10 de fev. de 2009
Respostas 4
Participantes 2