2017-12-27 5 views
0

Mapper.java의 새 속성을 nullValueCheckStrategy과 같이 추가 할 수 있습니까?Java - MapStruct :`nullValueCheckStrategy`와 같은 Mapper의 사용자 정의 속성

nullValueCheckStrategy = NullValueCheckStrategy.ALWAYS 코드 생성시 모든 필드에 대해 if(filed != null)이 추가됩니다.

그리고 권한이없는 사용자의 값을 업데이트하지 않으려면 if(rightService.hasRole("Admin") { ... }과 같은 값을 갖고 싶습니다.

나는 여기에 질문을하는 것은 처음이다. 나는 약간의 해답을 얻기를 희망하며, 대단히 감사한다.

답변

2

현재 지원되지 않습니다. 그러나 사용자 정의 매퍼를 작성하고 보유한 다른 역할에 대해 다른 메소드를 제공하여이를 달성 할 수 있습니다. 기본적인 아이디어는 당신이 각 역할에 대한 적절한 매핑으로 방법을 제공한다는 것입니다

@Mapper 
public abstract class MyMapper { 

    private MyService service; 

    public void update(Target target, Source source) { 
     if (service.hasRole("Admin")) { 
      updateForAdmin(target, source); 
     } else if (service.hasRole("X")) { 
      updateForX(target, source); 
     } 
    } 


    //Mappings for Admin, ignore those that he/she has no rights 
    protected abstract updateForAdmin(@MappingTarget Target target, Source source); 

    //Mappings for X, ignore those that he/she has no rights 
    protected abstract updateForX(@MappingTarget Target target, Source source); 

    //setter injection 
} 

:처럼 매퍼 볼 수 있었다. 매퍼에는 공용 메서드가 하나 뿐이며 나머지는 MapStruct가 구현하기위한 것입니다.

+0

감사합니다. 시도해 보겠습니다. –

+0

효과가있는 경우 대답을 수락 할 수 있습니다. 그렇지 않으면 알려주세요. 나는 그것을 업데이트 할 수 있습니다. – Filip

+0

당신의 솔루션은 그가 권리가 없다는 것을 무시하기 때문에 나에게는 좋지 않다고 생각합니다. 그래서 우리는 다른 요청을 보내야합니다. 하지만 모든 정보가있는 동일한 요청으로 작업하고 싶습니다. 백엔드에 권리가 없다면 테스트 할 것입니다. 우리는 그의 가치를 사용할 수 없으며 수정하지 않으려면 데이터베이스에서 기존 값을 가져올 필요가 있습니다. –