我收到以下错误session.save(student);
org.hibernate.HibernateException: The database returned no natively generated identity value
这是主要功能
{
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();
}
}
答案 0 :(得分:0)
我的第一个猜测是您的数据库不支持本机生成的标识符。您必须在映射文件中为主键指定“native”(默认值)以外的生成器。
尝试“增量”,这告诉Hibernate处理标识符生成而不是依赖数据库。但请记住,它不适用于集群:
<id name="...">
<column name="..." />
<generator class="increment" />
</id>
答案 1 :(得分:0)
MySQL DOES 支持本机生成器:
<id name="userID" column="userID">
<generator class="native"/>
</id>
但是这假设已使用ID列上的AUTO_INCREMENT
属性创建表,以便为新行生成唯一标识。
CREATE TABLE animals (
id MEDIUMINT NOT NULL AUTO_INCREMENT,
name CHAR(30) NOT NULL,
PRIMARY KEY (id)
);
您应该让SchemaExport
为您生成DDL。
答案 2 :(得分:0)
我有同样的问题,并且在键上设置自动增量解决了它。