2017-01-21 1 views
1

私は非常に単純なmaven + hibernateプロジェクトを持っています。HibernateはDBテーブルを再構築します

「select * from product」コマンドを使用して、データを取得してコンソールに表示したいとします。しかし、私は私のアプリを起動するたびに、それはすべてのデータが削除された結果、データベース内のすべてのテーブルを再構築します。

私はアプリを立ち上げるたびにテーブルを再構築しないでください。

Main.java

public class Main { 

static final Logger logger = LogManager.getLogger(Main.class); 

public static void main(String[] args) { 
    SessionFactory sessionFactory = HibernateUtil.getSessionFactory(); 
    Session session = sessionFactory.openSession(); 
    List<Object> products = null; 

    try { 
     session.beginTransaction(); 

     SQLQuery query = session.createSQLQuery("select * from product"); 
     query.addEntity(Product.class); 
     products = query.list(); 

     session.getTransaction().commit(); 
    } catch (Exception e) { 
     session.getTransaction().rollback(); 
     e.printStackTrace(); 
    } finally { 
     session.close(); 
     sessionFactory.close(); 
    } 

    System.out.println("Hello"); 

    for (Iterator iterator = products.iterator(); iterator.hasNext();) { 
     Product product = (Product) iterator.next(); 
     logger.info("Hello"); 
    } 
} 

hibernate.cfg.xmlの

<?xml version="1.0" encoding="utf-8"?> 
<!DOCTYPE hibernate-configuration PUBLIC 
"-//Hibernate/Hibernate Configuration DTD 3.0//EN" 
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> 
<hibernate-configuration> 
    <session-factory> 
     <property name="hibernate.connection.driver_class">org.postgresql.Driver</property> 
     <property name="hibernate.connection.url">jdbc:postgresql://localhost:5432/hibernate</property> 
     <property name="hibernate.connection.username">postgres</property> 
     <property name="hibernate.connection.password">****</property> 
     <property name="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</property> 
     <property name="show_sql">true</property> 
     <property name="hbm2ddl.auto">create</property> 
     <property name="hibernate.jdbc.lob.non_contextual_creation">true</property> 

     <mapping class="models.User"/> 
     <mapping class="models.Role"/> 
     <mapping class="models.Product"/> 
     <mapping class="models.ProductCategory"/> 
     <mapping class="models.Order" /> 
    </session-factory> 
</hibernate-configuration> 
+0

JPAのAPIの

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

代わりにhibernate.cfg.xmlファイル内のコードを以下に示します。 'jpa'タグが削除されました –

答えて

1

使用しない

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

ありがとう!できます。 – ru51an

+0

グレートそれを維持する。 –

関連する問題