我正在使用带有Hibernate Validator的spring boot 1.4.1。在我的实体上添加了自定义约束验证(UniqueRoute),如此
@Entity
public class Route extends BaseEntity {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "route_id")
private Integer routeId;
@Column(name = "name")
@Size(max = 150)
@UniqueRoute(message="Route name already in use")
private String name;
@Column(name = "acronym")
@Size(max = 5)
@NotEmpty(message="Route acronym is required.")
private String acronym;
验证在创建实体期间应该正常工作,但问题是在更新期间,我相信即使路由存在,用户也应该能够更新acronym
,但在这种情况下,在更新期间路由已存在,用户无法更新首字母缩略词
不应允许用户将路由名称更新为存在的其他名称,但同时即使名称存在,用户也应该能够更新首字母缩写词(唯一)
我想获得routeId
以便我可以在更新期间用于验证。
基本上取id并检查名称值是否更改,如果没有,则isValid
为真,但如果更改且名称存在则isValid
否则为true。
所以我想问题是如何在routeId
实施级别访问ConstraintValidator