2016-04-10 61 views
0

我使用hibernate orm,我有2個表與一對多的關係,我找不到爲什麼hibernate不會創建一個我的桌子(雜誌桌子)。 我使用hbm2dll自動創建表。hibernate:一對多的關係不會創建表之一

Magazine.hbm.xml

<hibernate-mapping> 

<class name="ir.sheentech.school.model.magazine.Magazine" table="magazine"> 
    <id name="magID" type="java.lang.Integer"> 
     <column name="MAG_ID"></column> 
     <generator class="identity"></generator> 
    </id> 
    <property name="magName"   column="MAG_NAME"  type="java.lang.String"  not-null="true"></property> 
    <property name="desc"    column="DESC"   type="java.lang.String"  ></property> 

    <set name="entesharat" table="entesharat" inverse="true" cascade="all"> 
     <key> 
      <column name="MAG_ID" not-null="true"></column> 
     </key> 
     <one-to-many class="ir.sheentech.school.model.magazine.Entesharat"/> 
    </set> 
</class> 

Entesharat.hbm.xml

<hibernate-mapping> 
<class name="ir.sheentech.school.model.magazine.Entesharat" table="entesharat"> 
    <id name="id" type="java.lang.Integer"> 
     <column name="ID"></column> 
     <generator class="identity"></generator> 
    </id> 

    <property name="name"   column="NAME"   type="java.lang.String"    not-null="true"></property> 
    <many-to-one name="magazine" column="MAG_ID" class="ir.sheentech.school.model.magazine.Magazine" not-null="true" >  </many-to-one> 
</class> 

的hibernate.cfg.xml

<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/school?zeroDateTimeBehavior=convertToNull</property> 
    <property name="hibernate.connection.username">root</property> 
    <property name="hibernate.connection.password">admin</property> 
    <property name="hibernate.show_sql">true</property> 
    <property name="hibernate.connection.pool_size">10</property> 
    <property name="hibernate.connection.CharSet">utf8</property> 
    <property name="hibernate.connection.characterEncoding">utf8</property> 
    <property name="hibernate.connection.useUnicode">true</property> 
    <property name="hbm2ddl.auto">update</property> 
</session-factory> 

Magazine.java

public class Magazine { 
private Integer magID; 
private String magName; 
private Set<Entesharat> entesharat = new HashSet<Entesharat>(0); 
private String desc; 
public Integer getMagID() { 
    return magID; 
} 
public void setMagID(Integer magID) { 
    this.magID = magID; 
} 
public String getMagName() { 
    return magName; 
} 
public void setMagName(String magName) { 
    this.magName = magName; 
} 
public Set<Entesharat> getEntesharat() { 
    return entesharat; 
} 
public void setEntesharat(Set<Entesharat> entesharat) { 
    this.entesharat = entesharat; 
} 
public String getDesc() { 
    return desc; 
} 
public void setDesc(String desc) { 
    this.desc = desc; 
} 

Entesharat.java

public class Entesharat { 

private Integer id; 
private String name; 
private Magazine magazine; 


public Integer getId() { 
    return id; 
} 
public void setId(Integer id) { 
    this.id = id; 
} 
public String getName() { 
    return name; 
} 
public void setName(String name) { 
    this.name = name; 
} 
public Magazine getMagazine() { 
    return magazine; 
} 
public void setMagazine(Magazine magazine) { 
    this.magazine = magazine; 
} 

}

+0

你在哪裏指定你的映射文件的關鍵詞? –

+0

在資源文件夾中。 entesharat表是好的,但雜誌不會創建 我想這可能是一個MySQL的外鍵問題 –

回答

0

的問題是在低於

magazine.hbm.xml

代碼
<property name="desc"    column="DESC"   type="java.lang.String"  ></property> 

DESC是在MySQL

相關問題