2017-09-05 13 views
1

나는 엔터티억제하는 방법 롬복 경고

@Builder 
class MyEntity { 
    private Set<OtherEntitiy> children = new HashSet<>() 
} 

하고 난 롬복 경고를 얻을.

경고 : @Builder는 초기화 표현식을 완전히 무시합니다. 초기화 표현식을 기본값으로 사용하려면 @ Builder.Default를 추가하십시오. 건물에 세워서는 안된다면, 필드를 마지막으로 만드십시오. Set = new HashSet <>();

질문 : 나는 어떻게 롬복의 경고를 억제 할 수 있습니까?

또한. 나는 NullPointerException을 피하기 위해 아이들을 초기화해야한다. 또한 나는 이것이 최종적인 것이 아니기 때문에 이것을 최종으로 표시 할 수 없다. 나는이 엔티티를 빌더와 함께 만들뿐만 아니라 다른 생성자에 대한 기본값을 저장하고 싶어하기 때문에 @Builder.Default이라는 표시를 할 수 없습니다.

+2

롬복은 항상 그 값을 덮어 씁니다. https://github.com/rzwitserloot/lombok/issues/916 저는 롬복을 잘 모르지만, 해결 방법은 클래스 대신에'@ Builder'를 사용하여 생성자를 목표로 삼는 것입니다. – Radiodef

+0

나는 경고 자체가 설명력이 있다고 생각한다. 경고 메시지를 표시하지 말고 메시지의 제안 사항을 따르면서 경고 메시지를 수정하는 것이 좋다. – dpr

+0

@dpr 당신 말이 맞습니다. 먼저 문제를 해결하는 방법을 생각해야합니다. 그러나이 경우 제안 된 결정은 용납되지 않습니다. 위의 질문에서 설명했습니다. –

답변

1

사용 @Builder.DefaultBuilder

@Builder 
class MyEntity { 
    @Builder.Default 
    private Set<String> children = new HashSet<>(); 
} 

당신은 Lombok
다음 객체 생성시 값을 선택할 것입니다 정의 된 기본값이 분야에서 사용할 사용자에 대한 기본 동작을 추가하는

@Builder.Default 기능이 lombok v1.16.16. 에 추가되었습니다. 따라서 Lombok의 하위 버전을 사용하는 경우 그것을 사용할 수 있어야합니다.