在 lombok 之后未调用覆盖 Setter 方法

Rah*_*hul 0 java setter lombok spring-boot

我用 Lombok 进行注释。我需要覆盖其中一个属性的 setter 方法。但这是行不通的。

我已经注释了属性,@Setter(AccessLevel.NONE)然后显式调用setProperty

下面提到豆子。

@Data
@AllArgsConstructor
@Slf4j
public class TestDto
{

    private String code;

    @Setter(AccessLevel.NONE)
    private String nameCode;

    public void setNameCode(String nameCode)
    {
        log.info("  nameCode   {}", nameCode);
        this.nameCode = <Call to some method>;
    }

}
Run Code Online (Sandbox Code Playgroud)

在其中设置 bean 列表的 DTO。

@Data
@NoArgsConstructor
@AllArgsConstructor
public class TestViewDto {
    private List<TestDto> testDtoList;
    .............Few more dto's..............................
    }
Run Code Online (Sandbox Code Playgroud)

这是从服务线下调用的..

travelAgentViewDto.setTestDto(repository.findTestNumber(number);
Run Code Online (Sandbox Code Playgroud)

存储库接口定义如下:

public interface Repository extends JpaRepository<Address, AddressPk> {
        public List<TestDto> findTestNumber(String number);

}
Run Code Online (Sandbox Code Playgroud)

代码工作正常。唯一的问题是当覆盖它时setNameCode不会进入 setter。

setNameCode方法下面的日志应该打印:log.info(" nameCode {}", nameCode)

实际上,电话不会去那里。

rzw*_*oot 5

正如@Ravik 提到的,您不需要明确告诉 lombok 不要生成 setter;你写了一个的事实意味着一个'赢'并且lombok首先不会生成那个二传手。

你没有看到那个 setter 被调用的原因是......因为 JPA 没有调用它。你有一个@AllArgsConstructor注释;JPA 正在调用THAT。我对 JPA 不太熟悉;但是,我建议您@NoArgsConstructor改用,从而迫使 JPA 使用 setter。