Java – How to set default boolean value in JPA

javajpa

I have an attribute

private boolean include;

I would like to set its default value to true, so that in the database it must display True from default. Is this possible in JPA?

Best Answer

As far as i known there is no JPA native solution to provide default values. Here it comes my workaround:

Non database portable solution

@Column(columnDefinition="tinyint(1) default 1")
private boolean include;

Java oriented solution

private boolean include = true;

Java oriented plus Builder pattern

     @Column(nullable = false)
     private Boolean include;
     ...
     public static class Builder {
      private Boolean include = true; // Here it comes your default value
      public Builder include (Boolean include ) {
      this.include = include ;
      return this;
     }
     // Use the pattern builder whenever you need to persist a new entity.
     public MyEntity build() {
       MyEntity myEntity = new MyEntity ();
       myEntity .setinclude (include );
       return myEntity;
      }
...
}

This is my favorite and less intrusive. Basically it delegates the task to define the default value to the Builder pattern in your entity.