这是我的实体
@Entity
public class User {
@Id
private int id;
private String name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
这是我的hibernate.cfg.xml
<?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/test
</property>
<property name="hibernate.connection.username">
root
</property>
<property name="hibernate.connection.password">
root
</property>
<!-- List of XML mapping files -->
<mapping class="User"/>
</session-factory>
</hibernate-configuration>
我有一个名为test的空数据库,其中包含用户和密码&#34; root&#34;。但是当我尝试创建用户并将其保存到数据库时,我得到一个例外
Exception in thread "main" org.hibernate.exception.SQLGrammarException: could not execute statement
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'test.user' doesn't exist
我做错了什么?
答案 0 :(得分:3)
这是因为test.user
在数据库中不可用。
您需要在启动应用程序服务器之前创建表
(或)
启用hibernate DDL生成为true,让hibernate创建表(如果不存在)。 (不要在生产或QA环境中这样做,因为这不是一个好习惯)。
将其添加到休眠属性列表中。
<property name="hibernate.hbm2ddl.auto">update</property>
答案 1 :(得分:0)
在配置文件中添加以下属性。
<property name="hbm2ddl.auto">create</property>
由于