Erro : Type safety: The expression of type List needs unchecked conversion to conform to

Olá,

uma duvida por aparece esse alert no Eclipse e como tirar ???

abs


	List<Usuario> l_list = new ArrayList<Usuario>();
	        try {    
	        	em = factory.createEntityManager(); 
	        	l_list = em.createQuery("select x from Usuario x where x.id="+Id).getResultList();
	        	return l_list;

Type safety: The expression of type List needs unchecked conversion to conform to 
 List<Usuario>

Talvez porque você deveria criar uma List e não ArrayList…
depois de criada, você poderá dar um cast e transformar em uma ArrayList…

E também porque o método getResultList() não me lembro bem mas acho
que não retorna uma lista compatível com o ArrayList.

Como vc está retirando os dados de um banco , experimente utilizar o ResultSet

ArrayList é uma classe concreta que implementa a interface List, ou seja, é impossível instanciar uma List.

O método getResultList() retorna um objeto que implementa List, então não importa se for um ArrayList, uma LinkedList ou um Vector. Não existe algo como “List compatível com ArrayList”, ou implementa a interface List ou não.

ResultSet é usado em conexões via JDBC. O código passado está usando JPA.

O warning ocorre porque o método getResultList() returna uma List (de tipo não especificado), e você está atribuindo este retorno à uma List. Ou seja, é uma conversão não verificada pelo compilador.

Não sei se é possível transformar o retorno em uma lista tipada; entretanto você pode seguramente colocar um @SupressWarnings(“unchecked”) ou fazer um cast “l_list = ( List ) em.createQuery…” pois o nome da classe de retorno está fixo na query que você criou.

Adicionalmente você poderia utilizar o método getSingleResult(), já que está procurando pela id do objeto (supondo que id seja um campo único, claro).

Muito bem, agora se tu puder me explicar a diferença entre JDBC e JPA…

Pois eu nem ao menos sabia da existência de JPA

JDBC = Java Database Connectivity = conjunto de APIs que permite se conectar a um banco relacional e executar SQL.

JPA = Java Persistence API = framework de acesso a dados persistidos em bancos relacionais, mais ou menos a mesma idéia do Hibernate.

Ok entendido…
obrigado pela explicação…