2014-12-02 41 views
1

我创建了一个实体类Emp,我使用hbm2ddl.auto创建表,下面的实体相关表正在创建,但在我的数据库中的这张表之前还有一些表,如果我使用属性hbm2ddl.auto作为创建它需要删除总模式(总表)并创建实体相关表新鲜,旧表不会被删除。那些表在那里,这个新表被创建,我没有得到这个创建功能,任何人都可以澄清我的疑问。我使用的版本是3.6.4。hbm2ddl.auto不工作

Emp.java
@Entity 

@Table(name="Employe") 

public class Emp { 

    @Id 

    int empid; 

    String ename; 

    public int getEmpid() { 

     return empid; 

    } 

    public void setEmpid(int empid) { 

     this.empid = empid; 

    } 

    public String getEname() { 

     return ename; 

    } 

    public void setEname(String ename) { 

     this.ename = ename; 

    } 

} 

configuration.cfg.xml

<property name="connection.driver_class">com.mysql.jdbc.Driver</property> 
<property name="connection.url">jdbc:mysql://localhost:3306/sample</property> 
<property name="connection.username">root</property> 
<property name="connection.password">sun</property> 
<property name="connection.pool_size">1</property> 
<property name="dialect">org.hibernate.dialect.MySQLDialect</property> 
<property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property> 
<property name="show_sql">true</property> 
<property name="hbm2ddl.auto">create</property> 
<mapping class="in.hib.Emp" /> 

我的主程序是本

public class HibApplication { 

    public static void main(String[] args) { 

     Emp e=new Emp(); 

     e.setEmpid(2); 

     e.setEname("pavai"); 

     Configuration cfg=new Configuration().configure(); 

     SessionFactory sf=cfg.buildSessionFactory(); 

     Session session=sf.openSession(); 

     session.beginTransaction(); 

     session.save(e); 

     session.getTransaction().commit();   

    } 

} 
+0

可能重复不重新创建表](http://stackoverflow.com/questions/10778755/hibernates-hbm2ddl-auto-property-with-value-c reate - 是 - 不重新创建表) – 2014-12-02 06:18:56

回答

0

亲爱有所有四个定义如下

  1. validate-它可与hbm2ddl.auto使用四个可能的值简单地检查该表和其列在数据库中存在或不存在,如果表不存在或任何列不存在,则抛出异常。

  2. create - 如果值是创建而不是hibernate删除表,如果它已经存在,然后创建一个新表并执行该操作,这不会实时使用,因为旧数据从数据库中丢失。

  3. update - 如果值比hibernate使用现有表更新并且表不存在,则创建新表并执行操作。这是主要和经常实时使用,并建议。

  4. create-drop - 如果该值是创建drop而不是hibernate创建一个新表,并且在执行操作后它将删除该表,该值在测试hibernate代码时使用。

感谢 恩乔伊编码

0

尝试设置:

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

代替的[Hibernate的 'hbm2ddl.auto' 属性与价值 '创造' 是

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