Очевидно, что метод Query.list () в Hibernate API не является безопасным по типу «по замыслу», и не планирует его изменять .
Я считаю, что самое простое решение, позволяющее избежать предупреждений компилятора, - это действительно добавить @SuppressWarnings ("unchecked"). Эту аннотацию можно поместить на уровне метода или, если внутри метода, прямо перед объявлением переменной.
Если у вас есть метод, который инкапсулирует Query.list () и возвращает List (или Collection), вы также получите предупреждение. Но этот подавляется с помощью @SuppressWarnings («rawtypes»).
Метод listAndCast (Query), предложенный Matt Quail, менее гибок, чем Query.list ().
Пока я могу сделать:
Query q = sess.createQuery("from Cat cat");
ArrayList cats = q.list();
Если я попробую код ниже:
Query q = sess.createQuery("from Cat cat");
ArrayList<Cat> cats = MyHibernateUtils.listAndCast(q);
Я получу ошибку компиляции: Несоответствие типов: невозможно преобразовать список в ArrayList