どうやら、Hibernate API の Query.list() メソッドは「設計上」タイプ セーフではなく、変更する予定はありません。
コンパイラの警告を回避する最も簡単な解決策は、@SuppressWarnings("unchecked") を追加することだと思います。この注釈は、メソッド レベルに配置するか、メソッド内の場合は変数宣言の直前に配置できます。
Query.list() をカプセル化し、List (または Collection) を返すメソッドがある場合も、警告が表示されます。ただし、これは @SuppressWarnings("rawtypes") を使用して抑制されます。
Matt Quail によって提案された 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);
コンパイル エラーが発生します: Type mismatch: cannot convert from List to ArrayList