it-swarm.com.de

Festlegen des Standardwerts im Ruhezustand

Wie stelle ich den Standardwert im Ruhezustand-Feld ein?

110
Dejell

Wenn Sie einen echten Datenbank-Standardwert wünschen, verwenden Sie columnDefinition:

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

Beachten Sie, dass die Zeichenfolge in columnDefinition von der Datenbank abhängig ist. Wenn Sie diese Option wählen, müssen Sie dynamic-insert verwenden, sodass Hibernate keine Spalten mit null-Werten beim Einfügen enthält. Ansonsten ist es irrelevant, über Zahlungsausfälle zu sprechen.

Wenn Sie jedoch keinen Datenbank-Standardwert wünschen, sondern lediglich einen Standardwert in Ihrem Java-Code, initialisieren Sie Ihre Variable einfach so: private Integer myColumn = 100;

152
Petar Minchev

wie wär's, wenn Sie nur einen Standardwert für das Feld festlegen?

private String _foo = "default";

//property here
public String Foo

wenn sie einen Wert übergeben, wird dieser überschrieben. Andernfalls haben Sie einen Standardwert.

27
Tim Hoolihan

Sie können @PrePersist anotation verwenden und den Standardwert in der Pre-Persist-Phase festlegen.

Sowas in der Art:

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

Diese Methode ist nicht abhängig vom Datenbanktyp/der Version unter dem Ruhezustand. Der Standardwert wird festgelegt, bevor das Zuordnungsobjekt beibehalten wird. 

23
dbricman

verwenden Sie die Anmerkung für den Ruhezustand

@ColumnDefault("-1")
private Long clientId;
15
Mazen Embaby

Wenn Sie es in der Datenbank tun wollen:

Legen Sie den Standardwert in der Datenbank fest (Beispiel für SQL Server):

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

Hibernate-Datei zuordnen:

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

Siehe, der Schlüssel ist insert = "false". Update = "false".

6
CSA

Die oben angegebene Lösung zum Festlegen des Standardwerts mithilfe des Ruhezustands 

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

ist herstellerspezifisch und funktioniert nicht für Oracle.

5
hatellla

Eine Lösung besteht darin, Ihren Getter überprüfen zu lassen, um zu sehen, ob der Wert, mit dem Sie arbeiten, null ist (oder was auch immer der nicht initialisierte Zustand sein würde). Wenn dies der Fall ist, geben Sie einfach Ihren Standardwert zurück:

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

Verwenden Sie die Funktion @ColumnDefault(). Dies ist jedoch nur der Winterschlaf.

4
T3rm1

Ich habe danach gesucht und viele Antworten auf den Standardwert für column gefunden. Wenn Sie den in der SQL-Tabelle definierten Standardwert verwenden möchten, verwenden Sie in @Column Annotation"insertable = false". einsetzbar 

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

Wenn Sie columnDefination verwenden, funktioniert die @Column-Annotation möglicherweise nicht, da sie von der Datenbank abhängig ist.

4
Garvit Bansal

Sie können den Java-Klassenkonstruktor verwenden, um die Standardwerte festzulegen. Zum Beispiel:

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
...

}
2
user5507680
<property name="age" type="integer">
<column name="age" not-null="false" default="null" />
</property>
1
Deepak Poojari

ich arbeite mit Hibernate 5 und Postgres, und das hat von mir aus funktioniert. 

@Column (name = "ACCOUNT_TYPE"),nullable= false, columnDefinition = "varchar2-Standardwert 'END_USER' ') @Enumerated (EnumType.STRING) private Kontoart Kontoart;

0
Ala Messaoudi

Wenn Sie den Standardwert in Bezug auf die Datenbank festlegen möchten, setzen Sie einfach @Column( columnDefinition = "int default 1").

Wenn Sie jedoch einen Standardwert in Ihrer Java-App festlegen möchten, können Sie ihn wie folgt für Ihr Klassenattribut festlegen: private Integer attribute = 1;

0

Bei der Arbeit mit Oracle habe ich versucht, einen Standardwert für eine Aufzählung einzufügen

Ich habe folgendes gefunden, um am besten zu arbeiten.

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