내가 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 메타 모델 클래스는 각 빌드 내에서 생성되며 속성은 '정적'입니다. – bish
'정적'에 대한 getter를 구현할 수 있습니다. 이것은 "좋은 스타일"일 필요는 없습니다 :-) –