我的IT生活之旅

尽管这种生活有些累,但那心中的梦想依旧不变。

appfuse 异常:no natively generated identity value

为了解决以下问题,折腾了好长时间,终于发现了网上有个好的解决方案,非常感谢之。。。。

 

 

http://blog.sina.com.cn/s/blog_5da3d5c50100bjga.html

 

 

appfuse 异常:no natively generated identity val

(2009-01-02 15:43:12)
标签:

appfuse

hibernate

mysql

杂谈

分类:hibernate
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;

突然就行了。
阅读更多
个人分类: spring
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭