【发布时间】:2021-12-09 20:32:45
【问题描述】:
我有一个域类 Person 用 Lombok @Value 注释,因此将其标记为不可变,有 3 个字段。
在我的服务层中,我正在调用存储库以检查此人是否存在。
如果确实存在,我需要从数据库中获取Person 对象并更新money 字段。
由于它是不可变的,因此无法做到这一点。我正在阅读一些文章,发现这可以使用构建器模式来完成。
我可能需要在我的Person 类中创建一个updatePerson(),但不知道该怎么做。还是我需要做其他事情?
Person.java:
@Value
@Builder
public class Person {
private final UUID id;
private final String job;
private final BigDecimal money;
}
我正在使用 Java 15。
【问题讨论】:
-
听起来像
money不应该是final(所以可以更新)。将@Value 更改为@Data 应该为money创建setter 和getter,并且只为仍然为final的其他属性创建一个getter。 -
我无法使用数据。这只需要是不可变的。
标签: java immutability lombok