2015-08-29 4 views
0

У меня есть такая hibernate.cfg.xml:конфигурации Hibernate hbm2ddl.auto

<hibernate-configuration> 
<session-factory> 
<property name="connection.url">jdbc:postgresql://host:5432/app-dev</property> 
<property name="connection.driver_class">org.postgresql.Driver</property> 
<property name="hbm2ddl.auto">validate</property> 
...many mappings 
</session-factory> 

И проблема в том, что он пытается обновить схему базы данных, но я хочу, чтобы отключить эту функцию.

бревно из моего приложения:

2015-08-29 16:29:57 ERROR SchemaUpdate:261 - HHH000388: Unsuccessful: create table myschema.public.mytable (id int4 not null, count int4, anotherid int4, onemoreid int4, primary key (id)) 
2015-08-29 16:29:58 ERROR SchemaUpdate:262 - ERROR: syntax error at or near "-"   <<(mydatabase name contains "-" sign) 

Позиция: 27

Я также пытался оставить hbm2ddl.auto тег пустым или содержать значение 'Нет' в нем.

ответ

2

Удалить объект <property name="hbm2ddl.auto">validate</property> целиком.

По умолчанию все параметры будут ложными, а спящий режим не будет выполнять никаких обновлений.

+0

, которая работала, спасибо – AndreyS

0

Удалить Hibernate hbm2ddl.auto по умолчанию Hibernate ничего не делает.

С опцией docs

hbm2ddl.auto включается автоматическая генерация базы данных схемы непосредственно в базу данных. Это также можно отключить с помощью , удалив параметр конфигурации или перенаправленный в файл с помощью справки задачи SchemaExport Ant .

0

Подтверждение является свойством hbm2ddl.auto по умолчанию, даже если вы не указали свойство hbm2ddl.auto, а также по умолчанию проверяете. Во-вторых нет такого значения, как «ни один», есть только 4 варианта:

  1. validate- он просто проверяет эту таблицу и ее столбцы, существующие в базе данных или нет, если таблица не существует или любой столбец не существует, чем исключение Exception.

  2. create - Если значение создается, чем спящий режим, он отбрасывает таблицу, если она уже существует, а затем создает новую таблицу и выполняет эту операцию, она не используется в режиме реального времени, поскольку старые данные теряются из базы данных.

  3. update - Если значения обновляются, а hibernate использует существующую таблицу, и если таблица не существует, чем создает новую таблицу и выполняет операцию. Это в основном и часто используется в режиме реального времени, и это рекомендуется.

  4. create-drop - если значение представляет собой создание-падение, чем спящий режим, создает новую таблицу, и после выполнения операции она отбрасывает таблицу, это значение используется во время тестирования спящего кода.

Благодаря Njoy Coding

Смежные вопросы