Java 基本hibernate程序中的org.hibernate.HibernateException
我得到以下错误Java 基本hibernate程序中的org.hibernate.HibernateException,java,mysql,hibernate,orm,Java,Mysql,Hibernate,Orm,我得到以下错误session.save(学生) 这里是主要功能 { BasicConfigurator.configure(); Session session = HibernateUtil.getSessionFactory().openSession(); Transaction transaction = null; try { transaction = session.beginTransaction(); Address address = new Ad
session.save(学生)代码>
这里是主要功能
{
BasicConfigurator.configure();
Session session = HibernateUtil.getSessionFactory().openSession();
Transaction transaction = null;
try {
transaction = session.beginTransaction();
Address address = new Address("Outer Ring Road", "Delhi", "TN", "110001");
Student student = new Student("kumar", address);
session.save(student);
transaction.commit();
} catch (HibernateException e) {
if (transaction != null) {
transaction.rollback();
}
e.printStackTrace();
} finally {
session.close();
}
}
我的第一个猜测是,您的数据库不支持本机生成的标识符。必须在映射文件中为主键指定除“native”(默认值)之外的生成器
尝试“增量”,这告诉Hibernate处理标识符生成,而不是依赖数据库。但是请记住,它在集群上不起作用:
<id name="...">
<column name="..." />
<generator class="increment" />
</id>
MySQL是否支持本机生成器:
<id name="userID" column="userID">
<generator class="native"/>
</id>
您应该让SchemaExport
为您生成DDL
参考文献
我也遇到了同样的问题,在按键上设置自动递增解决了这个问题。您的SGBD的名称是什么?我使用的是MySQL workbench 5.2 CE数据库。驱动程序类是com.mysql.jdbc.DriverCan您可以发布用于映射学生和地址类的映射。这可能有助于调试您的问题。当询问Hibernate问题时:告诉我们您使用的是什么DB/方言,发布您的映射、表和确切的堆栈跟踪。
<id name="userID" column="userID">
<generator class="native"/>
</id>
CREATE TABLE animals (
id MEDIUMINT NOT NULL AUTO_INCREMENT,
name CHAR(30) NOT NULL,
PRIMARY KEY (id)
);