Очевидно, что метод Query.list () в Hibernate API не является типобезопасным «по замыслу», и нет никаких планов его менять .
Я считаю, что самым простым решением, позволяющим избежать предупреждений компилятора, действительно является добавление @SuppressWarnings («не отмечено»). Эта аннотация может быть размещена на уровне метода или, если внутри метода, прямо перед объявлением переменной.
Если у вас есть метод, который инкапсулирует Query.list () и возвращает List (или Collection), вы также получаете предупреждение. Но этот подавляется с помощью @SuppressWarnings ("rawtypes").
Метод listAndCast (Query), предложенный Мэттом Куэллом, менее гибкий, чем 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