【发布时间】:2017-09-12 14:08:11
【问题描述】:
我已经编写了很多 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 类,因为我想检查这些以找出其他可能的错误!
【问题讨论】:
-
您可以为该字段添加
setter。 -
@StephenC 元模型类是在每个构建中生成的,它们的属性是
static -
您可以为
static实现一个getter。这不需要是“好风格”:-)
标签: java jpa criteria-api findbugs