Hibernate SQLGrammarException:无法准备语句

时间:2015-05-27 01:52:15

标签: java mysql hibernate

我有一个简单的项目,在数据库(MySQL)中有一个类和一个对应的表。如果将hbm2ddl.auto set create放在hibernate配置文件中,它可以正常工作。但是,如果我把它拿出来。该代码抛出以下异常:

  

错误:未找到表“学生”; SQL语句:

     

进入学生(fname,lname,entrance)值(?,?,?)[42102-185]

     

org.hibernate.exception.SQLGrammarException:无法准备语句

我已经在数据库中创建了表但我不知道为什么hibernate找不到表。我不确定与数据库的连接是如何工作的。

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-configuration SYSTEM 
"http://www.hibernate.org/dtd/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>

    <!-- Assume test is the database name -->
    <property name="hibernate.CONNECTION.url">
        jdbc:mysql://localhost:3306/sample;MVCC=TRUE;DB_CLOSE_DELAY=-1;DATABASE_TO_UPPER=false;SCHEMA=sample
    </property>
    <property name="hibernate.connection.username"> root </property>
    <property name="hibernate.connection.password"> **** </property>

    <!-- Echo all executed SQL to stdout --> 
    <property name="show_sql">true</property>

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


    <!-- List of XML mapping files -->
    <!-- -->
    <mapping resource="Student.hbm.xml" />
    <!-- <mapping class="ourPackage.Student" /> -->
</session-factory>

</hibernate-configuration>

学生班:

@Entity
@Table(name="student") 
public class Student implements Serializable{
public Student(){

}

public Student(int id, String fName, String lName, String ent){
    this.id = id;
    this.fname = fName;
    this.lname = lName;
    this.entrance = ent;
}

public int getId() {
    return id;
}

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


public String getFname() {
    return fname;
}

public void setFname(String fname) {
    this.fname = fname;
}

public String getLname() {
    return lname;
}

public void setLname(String lname) {
    this.lname = lname;
}

public String getEntrance() {
    return entrance;
}

public void setEntrance(String entrance) {
    this.entrance = entrance;
}

@Id
@GeneratedValue
private int id;

private String fname;
private String lname;
private String entrance;
}

学生hibernate配置           

<hibernate-mapping>
<class name="ourPackage.Student" table="student">
  <meta attribute="class-description">
     This class contains the employee detail. 
  </meta>
  <id name="id" type="int" column="id">
    <generator class="native"/>
  </id>
  <property name="fname" column="fname" type="string"/>
  <property name="lname" column="lname" type="string"/>
  <property name="entrance" column="entrance" type="string"/>
 </class>
 </hibernate-mapping>

主要课程

public class StudentDB {
private static SessionFactory factory;
private static ServiceRegistry serviceRegistry;

@SuppressWarnings("deprecation")
public static void main(String[] args) {

    try {
        // factory = new Configuration().configure().buildSessionFactory();
        createSessionFactory();
    } catch (Throwable ex) {
        System.err.println("Failed to create sessionFactory object." + ex);
        throw new ExceptionInInitializerError(ex);
    }

     StudentDB ME = new StudentDB();
     Integer empID1 = ME.addStudent("Alex", "Jason", "2005");

     ME.listStudent();
     factory.close();
}

public void listStudent() {
    Session session = factory.openSession();
    Transaction tx = null;
    try {
        tx = session.beginTransaction();
        Query temp = session.createQuery("from Student");
        List students = temp.list();
        for (Iterator iterator = students.iterator(); iterator.hasNext();) {
            Student student = (Student) iterator.next();
            System.out.print("First Name: " + student.getFname());
            System.out.print("  Last Name: " + student.getLname());
            System.out.println("  entrance: " + student.getEntrance());
        }
        tx.commit();
    } catch (HibernateException e) {
        if (tx != null)
            tx.rollback();
        e.printStackTrace();
    } finally {
        session.close();
    }
}

public static SessionFactory createSessionFactory() {
    Configuration configuration = new Configuration();
    configuration.configure();
    serviceRegistry = new ServiceRegistryBuilder().applySettings(
            configuration.getProperties()).buildServiceRegistry();
    factory = configuration.buildSessionFactory(serviceRegistry);
    return factory;
}
}

0 个答案:

没有答案