Как установить логическое значение по умолчанию в JPA

Исключение нулевого указателя генерируется, когда приложение пытается использовать null в случае, когда требуется объект. К ним относятся:

  1. Вызов метода экземпляра объекта null.
  2. Доступ или изменение поля объекта null.
  3. Принимая длину null, как если бы это был массив.
  4. Доступ или изменение слотов null, как если бы это был массив.
  5. Бросок null как будто это было значение Throwable.

Приложения должны бросать экземпляры этого класса, чтобы указать на другие незаконные использования объекта null.

Ссылка: http://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html

27
задан Andre Coetzee 29 January 2015 в 05:03
поделиться

5 ответов

Насколько мне известно, нет собственного решения JPA для обеспечения значений по умолчанию. Вот мой обходной путь:

Решение без переноса базы данных

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

Java-ориентированное решение

private boolean include = true;

Шаблон Java плюс Plus Builder

     @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;
      }
...
}

Это мой любимый и менее навязчивый. По сути, он делегирует задачу по определению значения по умолчанию для шаблона Builder в вашей сущности.

51
ответ дан Antonio Maria Sanchez Berrocal 29 January 2015 в 05:03
поделиться

Вы всегда можете использовать аннотации @PreUpdate или @PrePersist для метода, в котором вы будете устанавливать, что следует сделать перед обновлением или перед сохранением в БД.

Или просто установите значение private boolean include = true;

0
ответ дан buræquete 29 January 2015 в 05:03
поделиться

Возможно, будет полезно людям, работающим с Microsoft SQL SERVER

    @Column(columnDefinition="bit default 0")
    private Boolean active;

Возможные значения: 0 или 1

0
ответ дан Taras Halynskyj 29 January 2015 в 05:03
поделиться
private boolean include = true;
-1
ответ дан Mark Ma 29 January 2015 в 05:03
поделиться

Я обнаружил, что добавление в конструктор - хороший обходной путь для новых объектов по умолчанию для значения:

public EntityName(){
    this.fieldToDefault = default;
}
1
ответ дан Alan Faz 29 January 2015 в 05:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: