На что Hibernate отображает логический тип данных при использовании базы данных Oracle по умолчанию? - PullRequest
31 голосов
/ 10 ноября 2009

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

@NotNull
boolean myBoolean;

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

Ответы [ 3 ]

55 голосов
/ 10 ноября 2009

Как сказал @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;
20 голосов
/ 10 ноября 2009

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

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

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>);
6 голосов
/ 27 июля 2015

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...