2015-10-19 5 views
0

Всякий раз, когда я запускаю этот код, спящий режим будет падать текущие таблицы/создать новый и заполнить его снова:Hibernate автоматически создает таблицу/падает старый один

public static void main(String[] args) { 
    UserRepository userRepository = UserRepository.getInstance(); 
    UserEntity user = new UserEntity("foo", "[email protected]", 4321); 
    userRepository.save(user); 
} 

persistence.xml:

<?xml version="1.0" encoding="UTF-8"?> 
<persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd"> 
    <persistence-unit name="web" transaction-type="RESOURCE_LOCAL"> 
    <provider>org.hibernate.ejb.HibernatePersistence</provider> 
    <exclude-unlisted-classes>false</exclude-unlisted-classes> 
    <properties> 
     <property name="javax.persistence.jdbc.url" value="jdbc:postgresql://localhost:5432/web"/> 
     <property name="javax.persistence.jdbc.user" value="postgres"/> 
     <property name="javax.persistence.jdbc.driver" value="org.postgresql.Driver"/> 
     <property name="javax.persistence.jdbc.password" value="1234"/> 
     <property name="hibernate.cache.provider_class" value="org.hibernate.cache.NoCacheProvider"/> 
     <property name="javax.persistence.schema-generation.database.action" value="update"/> 
     <property name="hibernate.hbm2ddl.auto" value="update"/> 
    </properties> 
    </persistence-unit> 
</persistence> 

Например, если я бегу main один раз, я найти в базе данных:

id |  username  | e-mail  | bar 
1  |  foo  | [email protected] | 4321 

Как и следовало ожидать, однако, если изменить UserEntity user = new UserEntity("bar", "[email protected]", 4321); и запустить снова:

база данных будет только шоу:

id |  username  | e-mail  | bar 
1  |  bar  | [email protected] | 4321 

не должны Hibernate держать базы данных, так как я использую?

<property name="hibernate.hbm2ddl.auto" value="update"/>

ответ

1

Вы это свойство javax.persistence.schema-generation.database.action

Значение этого свойство none, create, drop-and-create, drop.

update является недопустимым ценностью для этого объекта недвижимости.

Кроме того, у вас уже есть свойство hibernate.hbm2ddl.auto, поэтому я предлагаю просто удалить первый.

+0

Спасибо за более подробное объяснение :) – Mansueli