Cómo establecer el valor predeterminado en Hibernate

¿Cómo configuro el valor predeterminado en el campo Hibernar?

Si desea un valor predeterminado de la base de datos real, use columnDefinition – @Column(name = "myColumn", nullable = false, columnDefinition = "int default 100") . Observe que la cadena en columnDefinition depende de la base de datos. Además, si elige esta opción, debe usar dynamic-insert , por lo que Hibernate no incluye columnas con valores null en la inserción. De lo contrario, hablar de incumplimiento es irrelevante.

Pero si no desea el valor predeterminado de la base de datos, sino simplemente un valor predeterminado en su código Java, simplemente inicialice su variable de esa manera: private Integer myColumn = 100;

¿Qué hay de simplemente establecer un valor predeterminado para el campo?

 private String _foo = "default"; //property here public String Foo 

si pasan un valor, se sobrescribirá; de lo contrario, tendrá un valor predeterminado.

Puede usar la anotación @PrePersist y establecer el valor predeterminado en la etapa de pre-persistir.

Algo como eso:

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

Este método no depende del tipo de base de datos / versión debajo del Hibernate. El valor predeterminado se establece antes de persistir el objeto de mapeo.

usar la anotación de hibernación

 @ColumnDefault("-1") private Long clientId; 

Si quieres hacerlo en la base de datos:

Establezca el valor predeterminado en la base de datos (muestra del servidor sql):

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

Asignación de archivo de hibernación:

   ... 

Ver, la clave es insert = “false” update = “false”

Una solución es tener su getter check para ver si el valor con el que está trabajando es nulo (o cualquiera que sea su estado no inicializado) y si es igual a eso, simplemente devuelva su valor predeterminado:

 public String getStringValue(){ return (this.stringValue == null) ? "Default" : stringValue; } 

La solución proporcionada anteriormente para establecer el valor predeterminado con Hibernate

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

es específico del proveedor y no funcionará para Oracle.

Use la anotación @ColumnDefault() . Sin embargo, esto es hibernación.

Busqué esto y encontré muchas respuestas al valor predeterminado para la columna. Si desea usar el valor predeterminado definido en la Tabla SQL, en @Column Annotation use “insertable = false” . insertable

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

Si usa columnDefination, la anotación @Column puede no funcionar, ya que depende de la base de datos.

Puede usar el constructor de la clase java para establecer los valores predeterminados. Por ejemplo:

 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=  } //Setters and Getters ... } 
    

Trabajando con Oracle, estaba tratando de insertar un valor predeterminado para un Enum

Encontré lo siguiente para trabajar mejor.

 @Column(nullable = false) @Enumerated(EnumType.STRING) private EnumType myProperty = EnumType.DEFAULT_VALUE; 

Si desea establecer el valor predeterminado en términos de base de datos, simplemente configure @Column( columnDefinition = "int default 1")

Pero si lo que pretendes es establecer un valor predeterminado en tu aplicación java, puedes configurarlo en tu atributo de clase como este: private Integer attribute = 1;

La sugerencia anterior funciona, pero solo si la anotación se usa en el método getter. Si las anotaciones se usan donde se declara el miembro, no ocurrirá nada.

 public String getStringValue(){ return (this.stringValue == null) ? "Default" : stringValue; }