'How to handle "Save as draft" with Hibernate validation annotations

Say I have a simple form with the following field the user has to fill in:

name
surname
birth date
address

The data needs to be saved in a database table with the same fields/columns. All the columns are not nullable.

The form offers two buttons: "Save" and "Save as draft" to let the user finish compiling the form later.

The first will check if all the fields are correctly filled whereas the second doesnt make any check other than "cannot insert number in name field".

I tend to use Hibernate Validation annotations on my DTO, but in this case will break the function "Save as draft".

How would you handle this scenario?

Technologies I'm using: Spring Boot/MVC to expose the REST service consumed by frontend, hibernate/Spring DATA to save data to database.



Solution 1:[1]

You can use a validation function instead of annotations directly on the attributes. That way your validation can have some logic in it.

@Value
class MyDto{
  String name;
  String surname;
  DateTime birthdate;
  Address asdress;
  boolean draft;

  @AssertTrue
  private boolean validateInstance(){
    if(!isDraft()){
      // do validation
    }
    return true;
  }
}
  

Solution 2:[2]

Create an interface for your entry and create two implementations of that interface.
One being the actualEntry with the annotations.
The other being the draft without those annotations.

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 3Fish
Solution 2 Sander De Roover