migliorabile ha scritto:
@andbin: ATTENTO, il problema e' il CAST. L'assegnamento SALTA!
Sì .. lo so, l'avevo capito .. (ovviamente)
E il problema è sicuramente
List<Object[]> oggetti = q.getResultList();
ogg = oggetti.get(0); // <---------- QUI
Perché a runtime le parametrizzazioni non "esistono", quindi l'unica cosa che conta è che getResultList restituisca qualcosa che è-un List (es. ArrayList).
Quel getResultList() restituisce un List NON parametrizzato (il raw-type insomma) e assegnarlo ad un List<Object[]> è lecito, salvo un warning di "unchecked" conversion (è un warning! non un errore).
Il problema è (sicuramente) nella riga del get(0) perché la lista è parametrizzata e il compilatore infila un cast implicito a Object[], quindi diventa:
ogg = (Object[]) oggetti.get(0);
Ma se il primo oggetto della lista è un BigDecimal, allora è OVVIO che NON può essere convertito in nessun modo ad un Object[], quindi il cast FALLISCE.
Morale: la lista è (presumo) da vedere come List<BigDecimal>