Par défaut si je crée un champ dans une entité comme:
@NotNull
boolean myBoolean;
Et je laisse Hibernate créer automatiquement mes tables. À quel type de données Oracle cette carte sera-t-elle associée?
Numéro simple (1)
Si vous le souhaitez, utilisez SchemaExport pour générer un script dans votre base de données cible. Quelque chose comme
AnnotationConfiguration configuration = new AnnotationConfiguration();
configuration
.addAnnotatedClass(<TYPE_YOUR_CLASS>.class)
.setProperty(Environment.USER, <TYPE_YOUR_USER>)
.setProperty(Environment.PASS, <TYPE_YOUR_PASSWORD>)
.setProperty(Environment.URL, <TYPE_YOUR_URL>)
.setProperty(Environment.DIALECT, <TYPE_YOUR_DIALECT>)
.setProperty(Environment.DRIVER, <TYPE_YOUR_DRIVER>);
SchemaExport schema = new SchemaExport(configuration);
schema.setOutputFile("schema.sql");
schema.create(<DO_YOU_WANT_TO_PRINT_TO_THE_CONSOLE>, <DO_YOU_WANT_TO_EXPORT_THE_SCRIPT_TO_THE_DATABASE>);
Comme @Arthur l'a dit, il correspond à Number(1)
qui serait le bit sql standard où 0 == false
Et 1 == true
. Comme alternative, vous pouvez mapper char(1)
à 'T' ou 'F' comme ceci
@org.hibernate.annotations.Type(type="true_false")
@NotNull
boolean myBoolean;
ou mappez-le sur "Y" ou "N"
@org.hibernate.annotations.Type(type="yes_no")
@NotNull
boolean myBoolean;
Voilà ce dont vous avez vraiment besoin
Java POJO :
//@Type(type="true_false") //not working for '1' and '0' in NUMERIC(1) field
@Type(type= "org.hibernate.type.NumericBooleanType")
@NotNull(message="NOT_NULL")
@Column(name = "IS_DELEGATION", nullable = false)
private Boolean isDelegation;
Oracle DDL
alter table agent add (is_delegation number(1) default 0 not null);
Comme indiqué dans Hibernate doc