Ho un attributoCome impostare il valore booleano predefinito in APP
private boolean include;
vorrei impostare il suo valore di default a true, in modo che nel database deve visualizzare vero dal default. È possibile in JPA?
Ho un attributoCome impostare il valore booleano predefinito in APP
private boolean include;
vorrei impostare il suo valore di default a true, in modo che nel database deve visualizzare vero dal default. È possibile in JPA?
Per quanto ho conosciuto non esiste una soluzione nativa APP a fornire valori di default. Qui viene la mia soluzione: soluzione orientata
non database di soluzione portatile
@Column(columnDefinition="tinyint(1) default 1")
private boolean include;
Java
private boolean include = true;
Java orientata più 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;
}
...
}
Questo è il mio preferito e meno invadente. Fondamentalmente, delega l'attività a definire il valore predefinito per il pattern Builder nell'entità.
Anche '@Column (columnDefinition =" BOOLEAN DEFAULT false ")' funzionerà per molti database includono PostgreSQL. – youhans
Qualche idea di cosa fa il comitato JPA per gli sviluppatori? –
È sempre possibile utilizzare annotazioni @PreUpdate o @Prepersist sul metodo in cui verrà impostato ciò che deve essere eseguito prima dell'aggiornamento o prima del salvataggio in DB.
O semplicemente impostare il valore di private boolean include = true;
Utilizzando JPA 2.1 e Oracle 11 questo funziona per me utilizzando Oracle Tipo Numero di dimensioni 1:
Java:
@Column(name = "ENABLED", nullable = false)
private boolean enabled = true;
Creare script SQL:
CREATE TABLE "ACCOUNT"(
"ID" NUMBER(10,0) NOT NULL ENABLE,
"NAME" VARCHAR2(255 CHAR) NOT NULL ENABLE,
"PASSWORD" VARCHAR2(255) NOT NULL ENABLE,
"ENABLED" NUMBER(1,0) DEFAULT 1 NOT NULL ENABLE,
PRIMARY KEY ("ID")
);
ho trovato che l'aggiunta nel costruttore è una buona soluzione per le nuove entità predefinite ad un valore:
private boolean include = true;
Ciao Prova ad aggiungere alcune spiegazioni per dare un contesto al codice piuttosto che incollare semplicemente il codice. Anche se potrebbe avere perfettamente senso per te, sarebbe meglio spiegarlo. –
è possibile utilizzare l'assegnazione di cambiare il metodo di value.create setter predefinito e impostare il valore true. –
'booleano privato include = true;' funzionerà su Java. Tuttavia, devi assicurarti che il tuo database abbia un supporto diretto per i campi 'boolean' o se devi usare un convertitore. –
Puoi provare a seguire? Colonna (nome = "Includi") booleano privato include = true; –