Hibernate перезаписывает данные

367
03 сентября 2017, 01:36

Доброго дня, товарищи. Столкнулся с такой проблемой: сконфигурировал Hibernate, начал записывать сущности, всё хорошо, но после перезапуска приложения таблица очищается и данные записываются заново. Как сделать, чтобы при перезапуске данные дополнялись, а не перезаписывались? UPD: выкладываю листинг конфигурации

 <?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD//EN"
        "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory>
        <property name="hibernate.dialect">org.hibernate.dialect.PostgreSQL9Dialect</property>
        <property name="hibernate.connection.driver_class">org.postgresql.Driver</property>
        <property name="hibernate.connection.url">jdbc:postgresql://localhost:5432/</property>
        <property name="hibernate.connection.username">postgres</property>
        <property name="hibernate.connection.password">123</property>
        <property name="hbm2ddl.auto">create</property>
        <mapping class="model.PostEntity"/>
    </session-factory>
</hibernate-configuration>

Узнал, что hbm2ddl.auto со значением create виновен в вопросе, но допустим при первом запуске таблицы вообще нет, а при повторном нужно проверять её существование.

Answer 1

hibernate.hbm2ddl.auto может принимать такие значения:

  1. validate: проверяет схему но не вносит изменения.
  2. update: обновляет схему
  3. create: создаёт схему удаляя старую
  4. create-drop: удаляет схему после окончания сессии.

вам нужно заменить create на update

Answer 2

Это происходит из-за:

<property name="hbm2ddl.auto">create</property>

validate: validate the schema, makes no changes to the database.
update: update the schema.
create: creates the schema, destroying previous data.
create-drop: drop the schema at the end of the session.

Answer 3

На самом деле я смотрел в правильную сторону, сюда нужно указать update и даже если таблицы нет, он её создаст и при каждом перезапуске будет дополнять.

<property name="hbm2ddl.auto">create</property>
READ ALSO
Hibernate - Неправильный запрос к БД

Hibernate - Неправильный запрос к БД

Привет всем! Такая ситуация:

398
Добавление иконки с масштабом в google maps android

Добавление иконки с масштабом в google maps android

Ни в примерах, ни в документации не нашел о том как добавить на экран информацию о масштабеВ стандартном приложении справа снизу она отображается

445
Не работает плеер на странице

Не работает плеер на странице

В одном из полей сущности хранится музыкальная композиция (также есть текст и картинка), сущность хранится в базеAjax запросом обращаюсь к Spring...

353
Пытаюсь написать дождь на java - AWT, Swing

Пытаюсь написать дождь на java - AWT, Swing

Я пытаюсь написать дождь на java, но пока ни как не могу заставить дождинку двигаться:

372