我已經寫了很多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。這不需要是「好風格」:-) –