1. ホーム
  2. java

[解決済み] HibernateのHQL結果で型安全警告を回避する方法とは?

2022-10-24 16:09:48

質問

例えば、このような質問があります。

Query q = sess.createQuery("from Cat cat");
List cats = q.list();

このようなものを作ろうとすると、次のような警告が表示されます。

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


List<Cat> cats = q.list();

回避する方法はありますか?

どのように解決するのですか?

使用方法 @SuppressWarnings を使用するのは良い方法ですが、提案されたように q.list() .

他にも2つのテクニックを提案します。

キャストヘルパーを書く

単純に、すべての @SuppressWarnings を一カ所にまとめるだけです。

List<Cat> cats = MyHibernateUtils.listAndCast(q);

...

public static <T> List<T> listAndCast(Query q) {
    @SuppressWarnings("unchecked")
    List list = q.list();
    return list;
}

不可避な問題に対してEclipseが警告を生成しないようにする

Eclipse の Window>Preferences>Java>Compiler>Errors/Warnings で、Generic type で、チェックボックスを選択します。 Ignore unavoidable generic type problems due to raw APIs

これにより、上記のようなやむを得ない類似の問題に対して、不要な警告をオフにすることができます。

いくつかのコメント

  • を渡すことにしました。 Query の結果ではなく q.list() なぜなら、このメソッドはHibernateで不正を行うためにのみ使用でき、すべての List を不正に使用することはできません。
  • に対して同様のメソッドを追加することができます。 .iterate() などに同様のメソッドを追加できます。