Olá caros,
Estou montando uma HQL e tenho que utilizar algo do tipo
select obj ContratoEmpresarialEntity
from ContratoEmpresarialEntity obj
where obj.status in ( :parametro )
Posso trabalhar o argumento :parametro como um List?
valeu
Olá caros,
Estou montando uma HQL e tenho que utilizar algo do tipo
select obj ContratoEmpresarialEntity
from ContratoEmpresarialEntity obj
where obj.status in ( :parametro )
Posso trabalhar o argumento :parametro como um List?
valeu
Opa, ainda não estou conseguindo utilizar o array de objetos como parametro de uma named query, vcs poderiam dar uma mão? valeu!
Query na Entity
@NamedQuery(name = "recuperaFaturas",
query = " SELECT CE FROM ContratoEntity CE "
" WHERE CE.Fatura IN ( :listFaturas ) ")
Action
faturas está populada com uma lista do tipo FaturasEntity
Mensagem de erro:
java.lang.IllegalArgumentException: Can not set java.lang.Long field br.com.Fatura.id to java.util.ArrayList
Valeu!
Biroska,
Poste o seu mapeameno de ContratoEntity e também a implementação do método recuperaFaturas.
ContratoEntity
@OneToOne (targetEntity = FaturaEntity.class, fetch = FetchType.LAZY)
@JoinColumn (name = "CDFATURASEQ")
protected Fatura Fatura;
Método
public List<ContratoEntity> recuperaFaturas( List<Long> listFaturas) throws HibernateException, PlcException {
List<ContratoEntity> lista = ( List<ContratoEntity> )
recuperaListaViaNamedQuery("recuperaFaturas", new String[] {"listFaturas" }, new Object[] { listFaturas} );
return lista;
}
Posta o método recuperaListaViaNamedQuery.
Não possuimos acesso ao fonte do método “recuperaListaViaNamedQuery” mas passado os argumentos ele retorna uma lista.
Ele funiona, o utilizei para recuperar as “faturas”.
Biroska,
eu queria ver a implementação para ver se você estava usando a API do JPA ou do Hibernate.
De qualquer forma, ele está reclamando que o esperado é um Long e não uma Collection.
Creio que ele não esteja entendendo o seu IN na HQL.
Opa, é API do Hibernate.
Por que ele não estaria reconhecendo o “IN” ? estranho não é?
Biroska,
é provável que ao invés do método setParameterList para setar a lista, esteja sendo utilizado o setParameter
Alterei a abordagem…
estou passando o parametro dentro do IN como uma String com valor: 12, 16, 18
Neste caso, o erro é: Can not set java.lang.Long field br.com.Fatura.id to java.lang.String
Alguma sugestão para contornar esses problemas?
valeu!
Biroska,
Não adiantará você passar a String dessa forma.
Ou você passa um Long(Sem utilizar o IN), ou você mesmo executa a HQL e usa o método setParameterList
Será que algo desse tipo resolveria?
Encontrei a minha saída…vou ter que fazer algo do tipo…
StringBuilder sql = new StringBuilder();
sql.append(....)
query.setParameterList(…);
valeu!