Java Hibernate SQLGrammarException:无法准备语句
我有一个简单的项目,在数据库(MySQL)中有一个类和一个对应的表。如果将hbm2ddl.auto set create放在hibernate配置文件中,则可以正常工作。但是,如果我把它拿出来。代码引发以下异常: 错误:未找到表“学生”;SQL语句: 进入学生(fname、lname、入学)值(?,?)[42102-185] org.hibernate.exception.sqlgrammareexception:无法准备语句 我已经在数据库中创建了这个表,但我不知道为什么hibernate找不到这个表。我不确定与数据库的连接是如何工作的Java Hibernate SQLGrammarException:无法准备语句,java,mysql,hibernate,Java,Mysql,Hibernate,我有一个简单的项目,在数据库(MySQL)中有一个类和一个对应的表。如果将hbm2ddl.auto set create放在hibernate配置文件中,则可以正常工作。但是,如果我把它拿出来。代码引发以下异常: 错误:未找到表“学生”;SQL语句: 进入学生(fname、lname、入学)值(?,?)[42102-185] org.hibernate.exception.sqlgrammareexception:无法准备语句 我已经在数据库中创建了这个表,但我不知道为什么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>
学生休眠配置
使用autocreate,它会为您创建该表,但如果您不使用autocreate,则需要在数据库中手动创建该表。您是说您已经创建了该表。确保它位于正确的架构中,即
sample
,并且用户root
可以访问它。请显示插入位置operation@Shahzeb. 我已经使用MySQL工作台在正确的模式“sample”下创建了表。我知道为我自动创建它,但是代码找不到我已经创建的表。有趣的是,如果我没有犯错误,当我使用“create”作为autocreate的值时,它不应该删除创建的表,但是,我看不到autocreate创建的表。我猜,我给代码提供了正确的表地址,但是,我不知道我遗漏了什么
@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-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;
}
}