[RESOLVIDO] Get em valores de Objects

7 respostas
alanrodrigues

Tenho a seguinte situação…
Uma busca no banco que me retorna um java.lang.object… tem q ser assim… pois a busca é dinamica, e não dá pra saber qual entidade será retornada… e como todas as classes estendem de objects…
enfim…
Este object vem populado com uma lista de objects por ex:

Object a{
  Boolean b;
  String c;
}

Queria saber se tem como pegar os valores desse Object…

7 Respostas

Tchello

Não seria mais seguro, viável e elegante usar generics pra definir o tipo de retorno?

alanrodrigues

Vlw por responder…
então…
o retorno já é com generics…
p problema é o object q recebe este retorno…

Object object = dao.getByCustomQuery(String query);

E o dao

List<T> findByCustomQuery(String query);

O object está sendo populado corretamente…
mas nao sei como pegar os valores dele… pois ele vem com uma lista de objects…e nao consigo castar

Tchello

Posta o código desse DAO aqui por favor.

alanrodrigues
@Transactional
	public List<T> findByCustomQuery(String query){
		return entityManager.createQuery(query).getResultList();
	}

Onde a query pode ser
select p from pessoa p …
select a from area a…
select t from qualquer coisa

renamed

Talvez eu não tenha entendido muito bem, mas por que, ao invés de fazer

Object object = dao.getByCustomQuery(String query);

Você não faz

T object = dao.getByCustomQuery(String query);

E, na declaração da sua DAO vc faz algo do tipo

class DAO &lt;T extends OutraInterfaceQualquer&gt;

E nessa OutraInterfaceQualquer, vc coloca métodos que lhe apoiem na hora de obter esses valores…

Tchello

Duas coisas, primeiro leia e entenda a diferença entre uma Query e uma TypedQuery:

http://docs.oracle.com/javaee/6/api/javax/persistence/EntityManager.html#createQuery(java.lang.String, java.lang.Class)

Segundo, tente algo assim:

@Transactional public List<T> findByCustomQuery(String query){ return entityManager.createQuery(query, T.class).getResultList(); }

alanrodrigues

Vlw pelas dicas…
O problema era que a query estava sendo montada com os campos específicos,…
p.nome, a.id …
E o Object vinha sendo populado como um array de strings…
erro tosco…
mas ta resolvido, obrigado

Criado 29 de outubro de 2012
Ultima resposta 29 de out. de 2012
Respostas 7
Participantes 3