How to Comparison Validate in Hibernate

abe :
@Basic
@Column(name = "MIN_SALARY")

private Integer minSalary;

@Basic
@Column(name = "MAX_SALARY")

  private Integer maxSalary;

How can I create a validation where minimum salary cannot be greater than maximum salary in hibernate?

Alan Sereb :
  1. Create a check constraint in your SQL database just to be 100% sure.

  2. Create an interface that will describe the contract for the salary range.

public interface SalaryRange {
    Integer getMinSalary();
    Integer getMaxSalary();
}
  1. Create the annotation for validation
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
@Constraint(validatedBy = SalaryRangeValidator.class)
public @interface ValidateSalaryRange {
}
  1. Make your entity implement SalaryRange interface and hook your fields to the interface getters.

  2. Create a validator for range validation logic.

public class SalaryRangeValidator implements ConstraintValidator<ValidateSalaryRange, SalaryRange> {

    @Override public void initialize(ValidateSalaryRange date) {}

    @Override
    public boolean isValid(SalaryRange range, ConstraintValidatorContext ctx) {
        return range.getMinSalary() < range.getMaxSalary();
    }
}
  1. Annotate your entity with @ValidateSalaryRange

More info about Hibernate validator here

Guess you like

Origin http://10.200.1.11:23101/article/api/json?id=417603&siteId=1