我已经写了很多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:正常
不成文的公共或受保护的领域:EntityA_.entityB
没有人看到这个公共/受保护的字段。它的所有读取将返回默认值。检查错误(是否应该初始化?),或者如果无用,请将其删除。
由于我在几乎所有的查询中都使用元模型类,因此经常会引发此警告。
有没有什么有用的方法来避免这些警告?众所周知,元模型类只是生成的,它们的属性从来没有写过。
我不想从FindBugs sca中排除DAO类,因为我想检查这些以寻找其他可能的错误!
您可以为该字段添加一个'setter'。 –
@StephenC每个构建内生成元模型类,它们的属性是'static' – bish
您可以为'static'实现getter。这不需要是“好风格”:-) –