java - FindBugs:使用 JPA 元模型时如何避免 "Unwritten public field"警告?

标签 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: Normal

Unwritten public or protected field: EntityA_.entityB

No writes were seen to this public/protected field. All reads of it will return the default value. Check for errors (should it have been initialized?), or remove it if it is useless.

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

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

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

最佳答案

这里有一些想法:

<小时/>

1 - setter 可能会被声明为 private。 FindBugs 很可能不会检查 setter 是否被调用。

关于java - FindBugs:使用 JPA 元模型时如何避免 "Unwritten public field"警告?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46178630/

相关文章:

java - 创建仅限于自己类的通用接口(interface)

java - 没有制定目标 NDK 的规则

java - 线程优先级会影响同步块(synchronized block)访问吗?

java - 我怎样才能使用一组按钮的actionCommand来使用java进行另一个选择?

java - @RepositoryRestResource 中的自定义实现

java - junit 的异常 JPA derby 配置?

java - jpa/hibernate 如何通过带注释的外键映射元素集合

java - 在 CriteriaQuery 中使用 @ElementCollection(或查询 @ElementCollection 的内容)

java - 将 Java 泛型用于带有 WHERE 子句的 JPA findAll() 查询

jpa-2.0 - JPA 2 Criteria 中 From 子句中的子查询