【发布时间】:2018-03-06 20:33:48
【问题描述】:
使用包含字段的@Entity 类:
@JsonProperty("arrays")
@OneToMany(cascade = CascadeType.ALL)
@JoinColumn(name = "systemID", nullable = true)
private List<PVArray> arrays = null;
这定义了一个集合。下一步是强制 arrays 必须有一个或多个条目。
系统正在使用 Spring Boot 开发,使用 Jackson 进行 JSON 序列化/反序列化,使用 Hibernate 和 JPA 进行持久化。
我认为必须手动执行这样的约束。我还没有找到任何描述这个约束的注释。在 setter 中手动执行似乎还不够——如果传入的 JSON 根本没有 arrays 字段怎么办? setter 永远不会被调用,也没有机会执行。
是否可以编写一个在 JSON 反序列化后调用的方法?或者更一般地说(因为很明显,除了反序列化 JSON 之外,这些类还以其他方式实例化),在实例化对象结束时调用的方法,以便可以强制执行对象约束?
除了某些集合的大小之外,我还有其他限制要考虑。例如,一个类只能设置一个字段,不能同时设置。
【问题讨论】:
-
这不是 jpa,它只是坚持你所拥有的。 Java bean 验证 api 是您所需要的。更新问题和标签
-
感谢您的指点——又一个厨房水槽要学习。几天后我可以试试@Size。
标签: json hibernate spring-boot spring-data-jpa bean-validation