could not insert: [com.tarena.entity.Emp]
报错问题如下图,这个时候不要只看上面的SQLGrammarException
注意红线标注的位置上说明:原因是mysql.emp不存在。
1.去检查hibernate.cfg.xml里connection.url是否配置正确。
2.用sql直接在数据库查这张表是否存在。
我用的是mysql,后来检查出的问题是connection.url配置数据库出错了。
The database returned no natively generated identity value
<hibernate-mapping>
<class name="com.tarena.entity.Emp" table="emp">
<!-- 配置主键属性和字段的关系 -->
<id name="id" type="java.lang.Integer" column="id">
<generator class="native">
</generator>
</id>
<!-- 配置属性类中属性与表中字段的关系 -->
<property name="name" type="java.lang.String" column="name"/>
<property name="age" type="java.lang.Integer" column="age"/>
<property name="salary" type="java.lang.Double" column="salary"/>
<property name="marry" type="java.lang.Boolean" column="marry"/>
<property name="birthday" type="java.sql.Date" column="birthday"/>
<property name="last_login_time" type="java.sql.Timestamp" column="last_login_time"/>
</class>
</hibernate-mapping>
在指定主键生成策略的时候、配置了 、这是提供自动增长、为数据表中的主键自动增长、但是如果数据库没有定义id列为自动增长的话、就会出现The database returned no natively generated identity value错误,如下图。
要解决要在数据库中手动定义id列自动增长