FindBugs:如何在使用JPA元模型时避免“未写入的公共字段”警告?

时间:2017-09-12 14:08:12

标签: java jpa criteria-api findbugs

我写了很多DAO类,并在其中使用了JPA criteria API及其元模型,如下例所示:

@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:正常

     

未写入的公共或受保护字段:EntityA_.entityB

     

此公共/受保护字段未发现任何写入内容。所有读取都将返回默认值。检查错误(如果已经初始化?),或者如果没用则将其删除。

由于我几乎在所有查询中使用元模型类,因此会经常抛出此警告。

是否有任何有用的方法可以避免这些警告?众所周知,元模型类只是生成而且它们的属性从未被编写过。

我不想从FindBugs sca 中排除DAO类,因为我想检查这些类可能会发现其他可能的错误!

3 个答案:

答案 0 :(得分:1)

How to suppress FindBugs warnings for fields or local variables可能重复。

您可以提取方法并将方法级别@SuppressFBWarnings应用于该方法。

答案 1 :(得分:1)

以下是一些想法:

答案 2 :(得分:0)

您可以添加这些字段的设置器,然后就可以删除FindBugs错误消息