java - lombok 之后未调用重写 Setter 方法

标签 java spring-boot setter lombok

我用Lombok进行注释。我需要重写其中一个属性的 setter 方法。但这不起作用。

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

下面提到了该 bean。

@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>;
    }

}

在其中设置 bean 列表的 DTO。

@Data
@NoArgsConstructor
@AllArgsConstructor
public class TestViewDto {
    private List<TestDto> testDtoList;
    .............Few more dto's..............................
    }

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

travelAgentViewDto.setTestDto(repository.findTestNumber(number);

存储库接口(interface)定义如下:

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

}

代码运行良好。唯一的问题是覆盖 setNameCode 时同样的情况不会进入 setter 内部。

来自 setNameCode方法以下日志应打印:log.info(" nameCode {}", nameCode)

实际上,调用不会去那里。

最佳答案

正如 @Ravik 提到的,您不需要明确告诉 lombok 不要生成 setter;事实上,您编写了一个意味着一个“获胜”,并且 lombok 一开始就不会生成该 setter 。

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

关于java - lombok 之后未调用重写 Setter 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58557852/

相关文章:

Java套接字,那是死锁还是什么?

java - Struts 2 找不到从操作返回的成功结果

apache - 如何使用Docker容器在前端和后端之间进行REST调用

typescript - 有没有办法在 Typescript 中动态地将键映射到不同类型的 getter/setter?

java - setter 方法和返回 getter 的问题

oop - 什么时候不使用 setter 直接在对象上设置属性值被认为是好的设计?

java - Ant:如何创建不可变的文件集?

java - 可逆循环

spring-boot - 如何仅使用 Apache Shiro 进行授权?

spring - 如何获取Spring Boot应用根路径?