1

我必须对我的实体干预的字段“heureFin”和“heureDebut”设置一个约束,我想知道如何精确这个约束:heureFin>heureDebut?这是我的实体:

public class Intervention implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @Size(min = 1, max = 50)
    @Column(name = "IdIntervention", length = 50)
    private String idIntervention;
    @Basic(optional = false)
    @NotNull
    @Column(name = "HeureDebut", nullable = false)
    @Temporal(TemporalType.TIMESTAMP)
    private Date heureDebut;
    @Basic(optional = false)
    @NotNull
    @Column(name = "HeureFin", nullable = false)
    @Temporal(TemporalType.TIMESTAMP)
    private Date heureFin;
}

是否有可能,或者我应该在其他地方处理这个约束?

先感谢您 :)

4

1 回答 1

1

在会员级别是不可能的。您应该使用类级别约束并实现自己的约束验证器(它将实例作为 isValid() 方法的参数,便于比较)。

创建您的自定义验证器:

public class HourRangeValidator implements Constraint<InterventionHourRange, Intervention> {

isValid并使用您需要的比较逻辑实现方法。

创建自定义注释:

@ConstraintValidator(HourRangeValidator.class)
@Target(TYPE)
@Retention(RUNTIME)
public @interface InterventionHourRange {
    String message() default "{your.error.message}";
    String[] groups() default {};
}

并注释您的实体:

@InterventionHourRange
public class Intervention implements Serializable {

http://docs.jboss.org/hibernate/validator/4.0.1/reference/en/html/validator-customconstraints.html

于 2013-04-18T09:37:10.400 回答