2017-09-12 43 views
0

我已经写了很多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类,因为我想检查这些以寻找其他可能的错误!

+0

您可以为该字段添加一个'setter'。 –

+0

@StephenC每个构建内生成元模型类,它们的属性是'static' – bish

+0

您可以为'static'实现getter。这不需要是“好风格”:-) –

回答

1

这里有一些想法:

+0

看起来,没有编程方式来避免这些错误,但只是忽略它们,我在findbugs配置中添加了一个过滤器。 – bish

相关问题