包含字段的@Entity类:
@JsonProperty("arrays")
@OneToMany(cascade = CascadeType.ALL)
@JoinColumn(name = "systemID", nullable = true)
private List<PVArray> arrays = null;
定义了一个集合。下一步是强制arrays
必须有一个或多个条目。
系统正在使用Spring Boot进行开发,使用Jackson进行JSON序列化/反序列化,使用Hibernate和JPA进行持久化。
我认为像这样的约束必须手动强制执行。我还没有找到任何描述这种约束的注释。设置器中的手动执行似乎不够 - 如果传入的JSON根本没有arrays
字段会怎么样?永远不会召唤制定者,也没有执法机会。
是否有可能编写一个在反序列化JSON后调用的方法?或者更一般地说(因为很明显这些类除了反序列化JSON之外还有其他方式实例化),这是在实例化对象结束时调用的方法,以便可以强制执行对象约束?
我要考虑其他约束,而不仅仅是某些集合的大小。例如,一个类只能设置其中一个字段,而不是两个。
答案 0 :(得分:2)
你可以这样做:
@Size(min=1, max=10)
@JsonProperty("arrays")
@OneToMany(cascade = CascadeType.ALL)
@JoinColumn(name = "systemID", nullable = true)
private List<PVArray> arrays;
根据尺寸,您说至少需要1到10个元素