私は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クラスを除外したくないので、これをチェックして他のバグを見つけることができます。
フィールドに「セッター」を追加できます。 –
@StephenCメタモデルクラスは各ビルド内で生成され、その属性は 'static'です – bish
' static'のゲッターを実装することができます。これは「良いスタイル」である必要はありません:-) –