Как установить значение по умолчанию в поле Hibernate?
Как установить значение по умолчанию в Hibernate
Ответ 1
Если вы хотите иметь реальное значение по умолчанию для базы данных, используйте columnDefinition - @Column(name = "myColumn", nullable = false, columnDefinition = "int default 100")
. Обратите внимание, что строка в columnDefinition
зависит от базы данных. Также, если вы выберете этот параметр, вы должны использовать dynamic-insert
, поэтому Hibernate
не включает столбцы с null
значениями вставки. В противном случае говорить об умолчании не имеет значения.
Но если вам не требуется значение по умолчанию для базы данных, а просто значение по умолчанию в вашем Java-коде, просто выполните инициализацию своей переменной - private Integer myColumn = 100;
Ответ 2
как установить только значение по умолчанию для поля?
private String _foo = "default";
//property here
public String Foo
если они передают значение, то оно будет перезаписано, иначе у вас есть значение по умолчанию.
Ответ 3
Вы можете использовать анонс @PrePersist и установить значение по умолчанию на этапе предварительной настройки.
Что-то вроде этого:
//... 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(myProperty) {
this.myProperty= myProperty;
}
Этот метод не зависит от типа/версии базы данных под Hibernate. Значение по умолчанию устанавливается перед сохранением объекта сопоставления.
Ответ 4
Если вы хотите сделать это в базе данных:
Задайте значение по умолчанию в базе данных (образец 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" />
...
См., ключ - insert = "false" update = "false"
Ответ 5
Решение, приведенное выше, чтобы установить значение по умолчанию с помощью Hibernate
@Column(name = "myColumn", nullable = false, columnDefinition = "int default 100")
является специфичным для поставщика и не будет работать для Oracle.
Ответ 6
Одним из решений является проверка вашего геттера для проверки того, является ли какое-либо значение, с которым вы работаете, null (или независимо от его неинициализированного состояния), и если оно равно этому, просто верните значение по умолчанию:
public String getStringValue(){
return (this.stringValue == null) ? "Default" : stringValue;
}
Ответ 7
Я искал это и нашел много ответов на значение по умолчанию для столбца. Если вы хотите использовать значение по умолчанию, определенное в таблице SQL, то в @Column Annotation используйте "insertable = false" . вставляемый
@Column (name = columnName, length = lengthOfColumn, insertable = false)
Если вы используете columnDefination, это может быть аннотация @Column, так как она не зависит от базы данных.
Ответ 8
Вы можете использовать конструктор класса 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
...
}
Ответ 9
<property name="age" type="integer">
<column name="age" not-null="false" default="null" />
</property>
Ответ 10
Работа с Oracle, я пытался вставить значение по умолчанию для Enum
Я нашел следующее, чтобы работать наилучшим образом.
@Column(nullable = false)
@Enumerated(EnumType.STRING)
private EnumType myProperty = EnumType.DEFAULT_VALUE;
Ответ 11
Используйте аннотацию @ColumnDefault()
. Это только спящий режим, хотя.
Ответ 12
Вышеуказанное предложение работает, но только если аннотация используется для метода геттера. Если аннотации используются там, где объявлен член, ничего не произойдет.
public String getStringValue(){
return (this.stringValue == null) ? "Default" : stringValue;
}