Hibernate不会自动创建数据库中不存在的表

我有一个基本的Hibernate代码,我将属性“ hibernate.hbm2ddl.auto”设置为更新,因为它仍然无法在数据库中自动创建表。

这些是必需的文件:

employee.hbm.xml

<hibernate-mapping>

<class name="contacts.employee" table="contacts">

<meta attribute="class-description"></meta>

<id column="contactId" name="contactId" type="string">

<generator class="assigned"/>

</id>

<property column="contactName" length="100" name="contactName" not-null="true" type="string"/>

<property column="password" length="100" name="password" not-null="true" type="string"/>

<set cascade="all" name="groupOfResponsibilities" table="employee_responsibilty">

<key column="contactId"/>

<many-to-many class="contacts.responsibilities" column="responsibilityId"/>

</set>

</class>

</hibernate-mapping>

liability.hbm.xml

<hibernate-mapping>

<class name="contacts.responsibilities" table="responsibilities">

<meta attribute="class-description">

This class list of responsibilities if an employee

</meta>

<id column="responsibilityId" name="responsibilityId" type="long">

<generator class="increment"/>

</id>

<property column="responsibilityName" name="responsibilityName" type="string"/>

</class>

</hibernate-mapping>

hibernate.cfg.xml

<hibernate-configuration>

<session-factory>

<property name="hibernate.dialect">org.hibernate.dialect.MySQLInnoDBDialect</property>

<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>

<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/****</property>

<property name="hibernate.connection.username">*****</property>

<property name="hibernate.connection.password">*****</property>

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

<property name="hibernate.show_sql">true</property>

<mapping resource="contacts/employee.hbm.xml"/>

<mapping resource="contacts/responsibilitiy.hbm.xml"/>

</session-factory>

</hibernate-configuration>

这是我尝试运行的Main.java:

public class Main {

public static void main(String[] args) {

SessionFactory sessionfactory = NewHibernateUtil.getSessionFactory();

Transaction transaction = null;

try {

Session session = sessionfactory.openSession();

transaction = session.beginTransaction();

Set<responsibilities> groups = new HashSet<responsibilities>();

responsibilities responsibilityOne=new responsibilities("Java");

responsibilities responsibilityTwo=new responsibilities("SQL");

responsibilities responsibilityThree=new responsibilities("Oracle");

groups.add(responsibilityOne);

groups.add(responsibilityTwo);

groups.add(responsibilityThree);

String uuid = UUID.randomUUID().toString();

String uuid2 = UUID.randomUUID().toString();

employee firstEmployee;

firstEmployee = new employee(uuid, "Mike", groups);

employee secondEmployee = new employee(uuid2, "Marc", groups);

session.save(responsibilityOne);

session.save(responsibilityTwo);

session.save(responsibilityThree);

session.save(firstEmployee);

session.save(secondEmployee);

transaction.commit();

} catch (HibernateException e) {

transaction.rollback();

e.printStackTrace();

} finally {

}

}

}

这是我得到的错误:

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:表’ __ 。职责’不存在

回答:

我遇到了同样的问题,这对我有用-

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

以上是 Hibernate不会自动创建数据库中不存在的表 的全部内容, 来源链接: utcz.com/qa/403722.html

回到顶部