hibernate 主键自增策略
来源:互联网 发布:linux redis 启动 编辑:程序博客网 时间:2024/05/16 06:11
ERROR:
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'portal.hibernate_sequence' doesn't exist, wqee
主键自增策略有问题
源码如下:
1 package com.sanss.portal.model; 2 3 import javax.persistence.Entity; 4 import javax.persistence.GeneratedValue; 5 import javax.persistence.GenerationType; 6 import javax.persistence.Id; 7 import javax.persistence.Table; 8 9 @Entity 10 @Table(name="liuliangbaos") 11 public class Liuliangbaos { 12 private int id; 13 private String name; 14 private String zifeimiaosu; 15 private String canpinmiaosu; 16 private String created_at; 17 private String updated_at; 18 private String bianhao; 19 private String shiyongyouxiaoqi; 20 private String rongliang; 21 private String shiyongfanwei; 22 public Liuliangbaos() { 23 super(); 24 // TODO Auto-generated constructor stub 25 } 26 public Liuliangbaos(int id, String name, String zifeimiaosu, String canpinmiaosu, String created_at, 27 String updated_at, String bianhao, String shiyongyouxiaoqi, String rongliang, String shiyongfanwei) { 28 super(); 29 this.id = id; 30 this.name = name; 31 this.zifeimiaosu = zifeimiaosu; 32 this.canpinmiaosu = canpinmiaosu; 33 this.created_at = created_at; 34 this.updated_at = updated_at; 35 this.bianhao = bianhao; 36 this.shiyongyouxiaoqi = shiyongyouxiaoqi; 37 this.rongliang = rongliang; 38 this.shiyongfanwei = shiyongfanwei; 39 } 40 41 @Id 42 @GeneratedValue(strategy=GenerationType.AUTO) 43 public int getId() { 44 return id; 45 } 46 public void setId(int id) { 47 this.id = id; 48 } 49 public String getName() { 50 return name; 51 } 52 public void setName(String name) { 53 this.name = name; 54 } 55 public String getZifeimiaosu() { 56 return zifeimiaosu; 57 } 58 public void setZifeimiaosu(String zifeimiaosu) { 59 this.zifeimiaosu = zifeimiaosu; 60 } 61 public String getCanpinmiaosu() { 62 return canpinmiaosu; 63 } 64 public void setCanpinmiaosu(String canpinmiaosu) { 65 this.canpinmiaosu = canpinmiaosu; 66 } 67 public String getCreated_at() { 68 return created_at; 69 } 70 public void setCreated_at(String created_at) { 71 this.created_at = created_at; 72 } 73 public String getUpdated_at() { 74 return updated_at; 75 } 76 public void setUpdated_at(String updated_at) { 77 this.updated_at = updated_at; 78 } 79 public String getBianhao() { 80 return bianhao; 81 } 82 public void setBianhao(String bianhao) { 83 this.bianhao = bianhao; 84 } 85 public String getShiyongyouxiaoqi() { 86 return shiyongyouxiaoqi; 87 } 88 public void setShiyongyouxiaoqi(String shiyongyouxiaoqi) { 89 this.shiyongyouxiaoqi = shiyongyouxiaoqi; 90 } 91 public String getRongliang() { 92 return rongliang; 93 } 94 public void setRongliang(String rongliang) { 95 this.rongliang = rongliang; 96 } 97 public String getShiyongfanwei() { 98 return shiyongfanwei; 99 }100 public void setShiyongfanwei(String shiyongfanwei) {101 this.shiyongfanwei = shiyongfanwei;102 }103 104 }
果然,改成 identity 就OK 了!!! 姜还是老的辣啊
那么问题来了,mysql数据库怎么可以用SQL的主键自增方式 identity 呢??? 为嘛不能用自己的 auto ???
查了一下资料,大致解释如下:
Hibernate 能够出色地自动生成主键。Hibernate/EBJ 3 注释也可以为主键的自动生成提供丰富的支持,允许实现各种策略。其生成规则由@GeneratedValue设定的.这里的@id和@GeneratedValue都是JPA的标准用法, JPA提供四种标准用法,由@GeneratedValue的源代码可以明显看出.JPA提供的四种标准用法为TABLE,SEQUENCE,IDENTITY,AUTO.TABLE:使用一个特定的数据库表格来保存主键。SEQUENCE:根据底层数据库的序列来生成主键,条件是数据库支持序列。IDENTITY:主键由数据库自动生成(主要是自动增长型)AUTO:主键由程序控制。在指定主键时,如果不指定主键生成策略,默认为AUTO。@Id相当于@Id@GeneratedValue(strategy = GenerationType.AUTO) identity:使用SQL Server 和 MySQL 的自增字段,这个方法不能放到 Oracle 中,Oracle 不支持自增字段,要设定sequence(MySQL 和 SQL Server 中很常用)。Oracle就要采用sequence了. 同时,也可采用uuid,native等其它策略.(相关用法,上网查询)
也就是说:
auto: 当数据库中 不存在 这张表的时候可以用它建表的时候, 制定自增的方式, 存在的时候插入数据还用它就会出错了
identity: 使用SQL Server 和 MySQL 的自增字段
详情理解如下:
http://www.cnblogs.com/younggun/archive/2013/05/19/3086659.html
阅读全文
0 0
- hibernate 主键自增策略
- 在hibernate中实现oracle的主键自增策略
- 在hibernate中实现oracle的主键自增策略
- Hibernate中对于主键自增策略的Annotation
- 在hibernate中实现oracle的主键自增策略
- 在hibernate中实现oracle的主键自增策略
- Hibernate中对于主键自增策略的Annotation
- Hibernate中对于主键自增策略的Annotation
- hibernate 主键自增
- hibernate自增主键
- hibernate 非主键自增
- hibernate oracle 主键 自增
- hibernate处理主键自增
- 注解实现hibernate 主键ID自增长生成策略
- hibernate主键生成策略
- Hibernate 主键生成策略
- Hibernate之主键策略
- HIbernate主键策略【转载】
- 【PM】精确的恒流调节有助于提高快速充电
- [PHP学习]论PHP调用.net的webservice接口所碰到的坑
- user space 通过SIOCSIFNAME修改网口的name
- ASP.Net 在IIS中的处理过程
- 双向可控硅晶片光耦(TLP160J TLP260J TLP525G)基本原理及应用实例
- hibernate 主键自增策略
- TensorFlow实现卷积神经网络CNN
- Game of Flying Circus --(hdu5515)
- LeetCode 392. Is Subsequence
- mysql乐观锁初步认识
- Android传感器介绍
- 编程十戒
- 达内课程-流程控制语句(下)
- 委托和事件理解(转)