example - funcion booleana en oracle
¿A qué asocia Hibernate un tipo de datos booleano cuando usa una base de datos Oracle de forma predeterminada? (3)
Por defecto, si creo un campo en una entidad como:
@NotNull
boolean myBoolean;
Y dejé que Hibernate autocrease mis tablas. ¿A qué tipo de datos de Oracle se asignará este mapa?
Como @Arthur dijo que mapea al Number(1)
que sería el bit sql estándar donde 0 == false
y 1 == true
. Como alternativa puede mapear char(1)
a ''T'' o ''F'' como este
@org.hibernate.annotations.Type(type="true_false")
@NotNull
boolean myBoolean;
o asignarlo a ''S'' o ''N''
@org.hibernate.annotations.Type(type="yes_no")
@NotNull
boolean myBoolean;
Esto es lo que realmente necesitas
POJO de Java :
//@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);
Como se indica en el docu de Hibernate
Simplemente número (1)
Si lo desea, use SchemaExport para generar una secuencia de comandos en su base de datos de destino. Algo como
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>);