2017-09-12 428 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

相關問題