1

buildSessionFactory メソッドは hibernate 3 で非推奨になったため、ServiceRegistry を介してセッション ファクトリを作成する必要があります。以下のように作成しましたが、

 Configuration configuration = new Configuration().configure();
 Map<String, String> map = new HashMap<String, String>((Map)configuration
       .getProperties());
 ServiceRegistry serviceRegistry = new ServiceRegistryBuilder().applySettings(map)
       .buildServiceRegistry();

しかし、以下のようなpmdエラーが表示されます。

Multiple markers at this line
    - Type safety: The expression of type Map needs unchecked conversion to conform to Map<? extends String,? extends 
     String>
    - Map is a raw type. References to generic type Map<K,V> should be parameterized

どうすれば回避できますか? (Map)configuration.getProperties() のキャストが原因ですよね?

なぜジェネリックを使えないのか、

(Map<String,String>)configuration.getProperties()

また、applySettings() メソッドは Map を引数として受け取るため、サービス レジストリを初期化する正しい方法は上記ですか?

4

1 に答える 1

0

使用できます

(Map<String,String>)configuration.getProperties()

ただし、キャストが実行される時点 (実行時) に、返された Map に型パラメーターとして String が含まれていることを確認できないため、警告が生成されます。その情報はもう使用できないためです。実際、コンパイル後、キャストは次のようになります

(Map)configuration.getProperties()

マップには実際には文字列しか含まれていないようですが、これに依存するべきではなく、単に使用する必要がありますMap<?,?>

于 2012-12-19T16:14:56.630 に答える