2017-09-12 4 views
0

私はDAOクラスのかなり多くを書かれており、この例では同じように、彼らにJPA criteria APIとそのメタモデルを使用してきました:FindBugs:JPAメタモデルを使用しているときに「パブリックフィールドが書き込まれていません」という警告を回避するにはどうすればよいですか?

:静的コード分析を実行している間

@Override 
public EntityA findByEntityB(EntityB entityB) { 
    CriteriaBuilder builder = this.getCriteriaBuilder(); 
    CriteriaQuery<EntityA> criteriaQuery = builder.createQuery(EntityA.class); 
    Root<EntityA> root = criteriaQuery.from(EntityA.class); 
    criteriaQuery.select(root); 
    criteriaQuery.where(builder.and(builder.equal(root.get(EntityA_.entityB), entityB))); 
    return this.findByCriteriaQuery(criteriaQuery); 
} 

FindBugsは、次の警告をスローします

UWF_UNWRITTEN_PUBLIC_OR_PROTECTED_FIELD、Priorität:ノーマル

暗黙のpublicまたはprotectedフィールド:EntityA_.entityB

このパブリック/保護フィールドには書き込みが見られませんでした。すべての読み込みでデフォルト値が返されます。エラーがないかどうかを確認してください(初期化されているかどうか)。

ほとんどすべてのクエリでメタモデルクラスを使用するため、この警告は非常に頻繁にスローされます。

これらの警告を回避する便利な方法はありますか?私たち皆が知っているように、メタモデルクラスはただ生成され、その属性セットは決して書かれません。

FindBugs scaからDAOクラスを除外したくないので、これをチェックして他のバグを見つけることができます。

+0

フィールドに「セッター」を追加できます。 –

+0

@StephenCメタモデルクラスは各ビルド内で生成され、その属性は 'static'です – bish

+0

' static'のゲッターを実装することができます。これは「良いスタイル」である必要はありません:-) –

答えて

1

はいくつかのアイデアがあります:

  • は(冗長)セッターを追加するために発電機を変更します。
  • FindBugsフィルタ(http://findbugs.sourceforge.net/manual/filter.html参照)を実装して、特定のクラスまたはパッケージの特定のバグを除外します。または一般的に。
+0

これらのエラーを回避するためのプログラム的な方法はありませんが、無視するだけで、私のfindbugs設定でフィルタを追加することができます。 – bish

関連する問題