2016-11-16 77 views
0

我有一個hibernate項目,我想自動創建表。如果已經創建了一個表,那麼我會在Entity類中添加一個新字段,然後我想在表格中創建一個新字段而不刪除表格的數據。我將在下面給出我的源代碼。我無法從休眠項目自動創建表

的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.dialect">org.hibernate.dialect.MySQLDialect</property> 
    <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> 
    <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/test</property> 
    <property name="hibernate.connection.username">root</property> 
    <property name="hibernate.connection.password">1234</property> 
    <property name="hibernate.show_sql">true</property> 
    <property name="hibernate.hbm2ddl.auto">create</property> 

    <mapping class="Inventory" package="com.mycompany.testhibernate"/> 


    </session-factory> 
    </hibernate-configuration> 

EntityClass

 package com.mycompany.testhibernate; 

    import java.io.Serializable; 
    import javax.persistence.Entity; 
    import javax.persistence.GeneratedValue; 
    import javax.persistence.GenerationType; 
    import javax.persistence.Id; 

    @Entity 
    public class Inventory implements Serializable { 
     private Integer id; 
     private String itemName; 
     private String itemNote; 
     private Integer quantity; 

     @Id 
     @GeneratedValue(strategy=GenerationType.AUTO) 
     public int getId() { 
     return id; 
     } 

    public void setId(Integer id) { 
     this.id = id; 
     } 

    public String getItemName() { 
    return this.itemName; 
    } 

    public void setItemName(String itemName) { 
    this.itemName = itemName; 
    } 

    public String getItemNote() { 
    return itemNote; 
    } 

    public void setItemNote(String itemNote) { 
    this.itemNote = itemNote; 
    } 

    public void setQuantity(Integer quantity) { 
    this.quantity = quantity; 
    } 

    public int getQuantity() { 
    return this.quantity; 
    }  


    } 
+0

做u使用哪個版本的MySQL? –

+0

mysql版本5.6 – Riyad

回答

1

你嘗試使用這個選項?

如果該值更新,則Hibernate爲表和列 檢查:

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

應該根據自己的豆子

hbm2ddl.auto更新更新您的DDL。如果表格不存在,那麼它將創建一個新表格,如果列表不存在,它會爲其創建新的列。

也改變了屬性:

<mapping class="com.mycompany.testhibernate.Inventory"/> 
+0

我也試過了更新但是不起作用 – Riyad

+0

我猜你的映射標籤有誤,應該是 cralfaro

+0

公共靜態無效的主要(字串[] args){ AnnotationConfiguration配置=新AnnotationConfiguration(); config.addAnnotatedClass(Inventory.class); config.configure(); 新的SchemaExport(config).create(true,true); }當我從實體類運行以下代碼時,我可以在數據庫中創建表並從表中刪除現有數據。但我不想要這樣。 – Riyad