我有一个基本的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>