您好,我有一个关于建模不可变实体的正确方法的问题:
考虑这个实体(根据 Jens Schauder 的建议编辑):
@Getter
@RequiredArgsConstructor(staticName = "of", access = AccessLevel.PACKAGE)
public final class Student {
private final @Id @Wither
long studentId;
@NotNull
@Size(min = 4, max = 20)
private final String userId;
@NotNull
@Min(0)
private final int matriculationNumber;
@NotNull
@Email
private final String eMail;
}
所以这个实体应该是不可变的,并提供了一个静态的of
创建方法。还RequiredArgsConstructor
构建了一个私有构造函数,尽管它应该为每个定义的所有最终/非空字段创建一个可见的包。总之我做了AllArgsConstructor
这么说。
此处的此文档https://docs.spring.io/spring-data/jdbc/docs/current/reference/html/#mapping.fundamentals详细介绍了有关“对象创建内部”的部分说明了改进处理的4个方面-“ Spring Data 使用的构造函数不能是私有的“除其他外,我认为这些都已实现。
所以我的问题是:这个图示的实体在不变性和弹簧数据 jdbc 内部优化映射方面是否正确?
编辑:
intellij 中的 lombok 插件似乎存在错误,阻碍了access = AccessLevel.PACKAGE
正确的工作。见这里:
https ://github.com/mplushnikov/lombok-intellij-plugin/issues/584
虽然问题已经关闭,但新版本的插件不可用...