Как установить значение по умолчанию в Hibernate - PullRequest
121 голосов
/ 24 июня 2010

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

Ответы [ 15 ]

163 голосов
/ 24 июня 2010

Если вам нужно реальное значение по умолчанию для базы данных, используйте columnDefinition:

@Column(name = "myColumn", nullable = false, columnDefinition = "int default 100") 

Обратите внимание, что строка в columnDefinition зависит от базы данных.Также, если вы выберете эту опцию, вы должны будете использовать dynamic-insert, поэтому Hibernate не включает столбцы со значениями null при вставке.Иначе говорить о значении по умолчанию не имеет значения.

Но если вам не нужно значение по умолчанию для базы данных, а просто значение по умолчанию в вашем Java-коде, просто инициализируйте вашу переменную следующим образом - private Integer myColumn = 100;

29 голосов
/ 24 июня 2010

как насчет простой установки значения по умолчанию для поля?

private String _foo = "default";

//property here
public String Foo

, если они передают значение, оно будет перезаписано, в противном случае у вас будет значение по умолчанию.

26 голосов
/ 18 июля 2013

Вы можете использовать аннотацию @PrePersist и установить значение по умолчанию на стадии pre-persist.

Примерно так:

//... some code
private String myProperty;
//... some code

@PrePersist
public void prePersist() {
    if(myProperty == null) //We set default value in case if the value is not set yet.
        myProperty = "Default value";
}

// property methods
@Column(nullable = false) //restricting Null value on database level.
public String getMyProperty() {
    return myProperty;
}

public void setMyProperty(String myProperty) {
    this.myProperty= myProperty;
}

Этот метод не зависит от типа / версии базы данных нижеГибернация.Значение по умолчанию устанавливается перед сохранением объекта сопоставления.

17 голосов
/ 26 декабря 2017

использовать аннотацию в спящем режиме

@ColumnDefault("-1")
private Long clientId;
7 голосов
/ 29 ноября 2012

Если вы хотите сделать это в базе данных:

Установите значение по умолчанию в базе данных (пример сервера sql):

ALTER TABLE [TABLE_NAME] ADD  CONSTRAINT [CONSTRAINT_NAME]  DEFAULT (newid()) FOR [COLUMN_NAME]

Отображение файла гибернации:

    <hibernate-mapping ....
    ...    
    <property name="fieldName" column="columnName" type="Guid" access="field" not-null="false"  insert="false" update="false"  />
    ...

См. Ключ вставки = "ложь" обновление = "ложь"

6 голосов
/ 17 января 2014

Решение, предоставленное выше для установки значения по умолчанию с использованием Hibernate

@Column(name = “myColumn”, nullable = false, columnDefinition = “int default 100")

зависит от поставщика и не будет работать для Oracle.

5 голосов
/ 24 июня 2010

Одним из решений является проверка вашего геттера, чтобы увидеть, является ли любое значение, с которым вы работаете, нулевым (или каким бы не было его неинициализированное состояние), и если оно равно этому, просто верните значение по умолчанию:

public String getStringValue(){
     return (this.stringValue == null) ? "Default" : stringValue;
}
4 голосов
/ 16 ноября 2017

Использовать @ColumnDefault() аннотацию. Только в спящем режиме.

4 голосов
/ 18 июля 2015

Я искал это и нашел много ответов на значение по умолчанию для столбца. Если вы хотите использовать значение по умолчанию, определенное в таблице SQL, то в @Column Annotation используйте "inserttable = false" .вставляемый

@ Column (name = columnName, length = lengthOfColumn, inserttable = false)

Если вы используете columnDefination, аннотация @Column может быть не сработаеткак это зависит от базы данных.

2 голосов
/ 24 ноября 2015

Вы можете использовать конструктор класса Java для установки значений по умолчанию.Например:

public class Entity implements Serializable{
 private Double field1
 private Integer field2;
 private T fieldN;

 public Entity(){
  this.field1=0.0;
  this.field2=0;
  ...
  this.fieldN= <your default value>
 }

 //Setters and Getters
...

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...