FindBugs:使用 JPA 元模型时如何避免“Unwriting public field”警告?

2024-01-03

我写了很多 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,优先级:正常

不成文的公共或受保护字段:EntityA_.entityB

没有看到对该公共/受保护字段的写入。所有读取它都会返回默认值。检查是否有错误(是否应该已初始化?),如果无用则将其删除。

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

有什么有用的方法可以避免这些警告吗?众所周知,元模型类只是生成的,它们的属性从未被写入。

我不想从 FindBugs sca 中排除 DAO 类因为我想检查这些以找到其他可能的错误!


以下是一些想法:

  • Modify the generator to add a (redundant) setter1.
  • 实现 FindBugs 过滤器(参见http://findbugs.sourceforge.net/manual/filter.html http://findbugs.sourceforge.net/manual/filter.html)以排除特定类或包中的特定错误。或者一般情况下。

1 - The setter could potentially be declared as private. There is a good chance that FindBugs doesn't check that the setter is called.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

FindBugs:使用 JPA 元模型时如何避免“Unwriting public field”警告? 的相关文章

随机推荐