为了解决以下问题,折腾了好长时间,终于发现了网上有个好的解决方案,非常感谢之。。。。
http://blog.sina.com.cn/s/blog_5da3d5c50100bjga.html
appfuse hibernte mysql一起使用,添加用户数据时,出现以下异常:
The database returned no natively generated identity value; nested exception is org.hibernate.HibernateException: The database returned no natively generated identity value
1 类中关于主键的配置为
@Id @GeneratedValue(strategy = GenerationType.AUTO)
public Long getId() {
return this.id;
}
2 数据库的设置为:
mysql> describe app_user;
+---------------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------------------+--------------+------+-----+---------+----------------+
| id | bigint(20) | NO | PRI | NULL | auto_increment |
| account_expired | bit(1) | NO | | NULL | |
| account_locked | bit(1) | NO | | NULL | |
| address | varchar(150) | YES | | NULL | |
| city | varchar(50) | NO | | NULL | |
| country | varchar(100) | YES | | NULL | |
| postal_code | varchar(15) | NO | | NULL | |
| province | varchar(100) | YES | | NULL | |
| credentials_expired | bit(1) | NO | | NULL | |
| email | varchar(255) | NO | UNI | NULL | |
| account_enabled | bit(1) | YES | | NULL | |
| first_name | varchar(50) | NO | | NULL | |
| last_name | varchar(50) | NO | | NULL | |
| password | varchar(255) | NO | | NULL | |
| password_hint | varchar(255) | YES | | NULL | |
| phone_number | varchar(255) | YES | | NULL | |
| username | varchar(50) | NO | UNI | NULL | |
| version | int(11) | YES | | NULL | |
| website | varchar(255) | YES | | NULL | |
+---------------------+--------------+------+-----+---------+----------------+
主键为自动增长型的。但是新增数据时,却有这个异常:
The database returned no natively generated identity value; nested exception is org.hibernate.HibernateException: The database returned no natively generated identity value
3 JPA提供的四种标准用法为TABLE,SEQUENCE,IDENTITY,AUTO.
TABLE:使用一个特定的数据库表格来保存主键。
SEQUENCE:根据底层数据库的序列来生成主键,条件是数据库支持序列。
IDENTITY:主键由数据库自动生成(主要是自动增长型)
AUTO:主键由程序控制。
4 将主键改为 :
@Id @GeneratedValue(strategy=GenerationType.IDENTITY)
发现还是同样的错误。
5 在数据库里面执行下面语句:
ALTER TABLE app_user AUTO_INCREMENT = 100;
突然就行了。
The database returned no natively generated identity value; nested exception is org.hibernate.HibernateException: The database returned no natively generated identity value
1 类中关于主键的配置为
@Id @GeneratedValue(strategy = GenerationType.AUTO)
public Long getId() {
return this.id;
}
2 数据库的设置为:
mysql> describe app_user;
+---------------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------------------+--------------+------+-----+---------+----------------+
| id | bigint(20) | NO | PRI | NULL | auto_increment |
| account_expired | bit(1) | NO | | NULL | |
| account_locked | bit(1) | NO | | NULL | |
| address | varchar(150) | YES | | NULL | |
| city | varchar(50) | NO | | NULL | |
| country | varchar(100) | YES | | NULL | |
| postal_code | varchar(15) | NO | | NULL | |
| province | varchar(100) | YES | | NULL | |
| credentials_expired | bit(1) | NO | | NULL | |
| email | varchar(255) | NO | UNI | NULL | |
| account_enabled | bit(1) | YES | | NULL | |
| first_name | varchar(50) | NO | | NULL | |
| last_name | varchar(50) | NO | | NULL | |
| password | varchar(255) | NO | | NULL | |
| password_hint | varchar(255) | YES | | NULL | |
| phone_number | varchar(255) | YES | | NULL | |
| username | varchar(50) | NO | UNI | NULL | |
| version | int(11) | YES | | NULL | |
| website | varchar(255) | YES | | NULL | |
+---------------------+--------------+------+-----+---------+----------------+
主键为自动增长型的。但是新增数据时,却有这个异常:
The database returned no natively generated identity value; nested exception is org.hibernate.HibernateException: The database returned no natively generated identity value
3 JPA提供的四种标准用法为TABLE,SEQUENCE,IDENTITY,AUTO.
TABLE:使用一个特定的数据库表格来保存主键。
SEQUENCE:根据底层数据库的序列来生成主键,条件是数据库支持序列。
IDENTITY:主键由数据库自动生成(主要是自动增长型)
AUTO:主键由程序控制。
4 将主键改为 :
@Id @GeneratedValue(strategy=GenerationType.IDENTITY)
发现还是同样的错误。
5 在数据库里面执行下面语句:
ALTER TABLE app_user AUTO_INCREMENT = 100;
突然就行了。