Hibernate + criteria + like + Long

6 respostas
C

Olá pessoal

Estou com uma dúvida estou criando uma Json para retornar uma lista de codigo(Long),
Gostaria de como criar essa lista usando um atributo do tipo Long?

Dao

public List<ProdutoEan> busca(Long codEan) {
		return session.createCriteria(ProdutoEan.class)
		.add(Restrictions.ilike("codEan",codEan))
		.list();
	}

6 Respostas

Guevara

Se eu entendi direito vc quer retornar Long ao invés do objeto ProdutoEan, certo?
Acho que ficaria assim:

public List<Long> busca(Long codEan) {
		return session.createCriteria(ProdutoEan.class, "p")
		.add(Restrictions.ilike("codEan",codEan))
.setProjection(Projections.projectionList()
	        	.add( Projections.property("p.codEan").as("codEan") )
		.list();
	}

Com projections vc escolhe que atributos quer retornar do objeto.
Veja se funciona.
Abraço!

C

Guevara:
Se eu entendi direito vc quer retornar Long ao invés do objeto ProdutoEan, certo?
Acho que ficaria assim:

public List<Long> busca(Long codEan) {
		return session.createCriteria(ProdutoEan.class, "p")
		.add(Restrictions.ilike("codEan",codEan))
.setProjection(Projections.projectionList()
	        	.add( Projections.property("p.codEan").as("codEan") )
		.list();
	}

Com projections vc escolhe que atributos quer retornar do objeto.
Veja se funciona.
Abraço!

Quero retornar o ProdutoEan só que o like da erro.

Caused by: java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Long
E

Tente usanda

ao invés de

Restrictions.ilike()
[]'s

C

Edenilton Fr?s:
Tente usanda

ao invés de

Restrictions.ilike()
[]'s

Correto usar o Restrictions.eq, porem o eq representa o = ou seja retorna um unico registro.

Gostaria que retornasse uma lista de codigo que inicia com 789 por exemplo da coluna codEan do tipo Long

E

Cleison,

Talvez seja melhor você usar hql.

A query ficaria mais ou menos assim:

Outra alternativa seria

mas não sei se o SGBD permite, uma vez que o campo codEan é numérico (é numérico mesmo?).

[]'s

C

Edenilton Fr?s:
Cleison,

Talvez seja melhor você usar hql.

A query ficaria mais ou menos assim:

Outra alternativa seria

mas não sei se o SGBD permite, uma vez que o campo codEan é numérico (é numérico mesmo?).

[]'s

Não aceita String por ser Long SGBD bigint

Criado 14 de setembro de 2010
Ultima resposta 14 de set. de 2010
Respostas 6
Participantes 3