Exception in thread "main" java.lang.ClassCastException: [Ljava.lang.Object;
at br.smarapd.facdb.service.FacdbManager.getValores(FacdbManager.java:84)
at br.smarapd.facdb.gui.FacdbForm.main(FacdbForm.java:47)
Será que estou errando no mapeamento? Alguém pode me ajudar?
Grato!!
Se você der select em uma coluna, ele vai trazer um objeto do tipo mapeado em Java para aquela coluna. Se der select em mais de uma, ele vai trazer um Object[]. Imagino que deu class cast exception por isso, você deve ter tentado colocar em outro tipo. Inclusive no strack trace está Ljava.lang.Object, um Object[]
Na continuação deste mapeamento, têm outras colunas do tipo INT… Será que é isso que interfere?
O Object[] é criado somente com as 2 colunas selecionadas ou com todas do mapeamento?
O select em mais de uma coluna vai trazer um Object[]. Não importa o tipo. A ordem do select vai ser a ordem no array.
[quote] Na continuação deste mapeamento, têm outras colunas do tipo INT… Será que é isso que interfere? [/quote] Eu acho que não. O que eu sei, por experiência própria de uso, quando comecei a usar o hibernate, é isso que te falei, sobre o Object[]. Com relação a tipos diferentes eu não tive problemas.
List instituicao = query.list();
System.out.println(((FacdbGeral)instituicao.get(0)).getInstituicao());
Levando em consideração que o hibernate vai trazer um array de object, pois, você deu select especificando os campos, a sua lista instituição vai estar armazenando uma lista de Object[], cada elemento da lista é um Object[]. Quando você dá o cast para FacdbGeral vai dar problema, pois o elemento 0 da lista não é um FacdbGeral.
Você vai percorrer a List normalmente, mas cada iteração você terá um objeto Object[] na mão. Cada elemento desse array é um valor de uma coluna do select, na ordem do select.