Подтвердить что ты не робот

Что Hibernate сопоставляет булевский тип данных при использовании базы данных Oracle по умолчанию?

По умолчанию, если я создаю поле в сущности типа:

@NotNull
boolean myBoolean;

И я позволяю Hibernate автоматически создавать мои таблицы. Каким будет тип данных Oracle для этой карты?

4b9b3361

Ответ 1

Просто номер (1)

Если вы хотите, используйте SchemaExport для создания script в вашей целевой базе данных. Что-то вроде

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>);

Ответ 2

Поскольку @Arthur сказал, что он соответствует Number(1), который будет стандартным битом sql, где 0 == false и 1 == true. В качестве альтернативы вы можете сопоставить char(1) с 'T' или 'F', как этот

@org.hibernate.annotations.Type(type="true_false")
@NotNull
boolean myBoolean;

или сопоставить его с "Y" или "N"

@org.hibernate.annotations.Type(type="yes_no")
@NotNull
boolean myBoolean;

Ответ 3

Это то, что вам действительно нужно

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);

Как указано в Hibernate document