Hibernate(一) 主键映射
摘自:http://ideasforjava.iteye.com/blog/644378
@Id注解可以将实体bean中的摸个属性定义为表示符,该属性可以通过应用自身进行设置,也可通过Hibernate生成(推荐),使用@GeneratedValue注解可以定义该标识的生成策略:
.AUTO
.TABLE
.IDENTITY
.SEQUENCE
package com.woxiaoe.study.hibernate; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; @Entity public class Student { private int id; private int age; private String name; @Id @GeneratedValue(strategy=GenerationType.AUTO)//<span style="font-size: 14.4px;">@GeneratedValue默认为AUTO</span> public int getId() { return id; } public void setId(int id) { this.id = id; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } } /** * create table Student ( id integer not null auto_increment, name varchar(255), age integer not null, primary key (id) ) */
TableGenerator(要注意pkColumnName,valueColumnName 的值不能为数据库关键字)
@Entity @TableGenerator( name="TB_GEN", table = "GENERATOR_TABLE", pkColumnName="pKey", valueColumnName = "pId", pkColumnValue = "id", allocationSize=20//增长量 ) public class Student { private int id; private int age; private String name; @Id @GeneratedValue(strategy=GenerationType.TABLE,generator = "TB_GEN") public int getId() { return id; } …………
基于主键生成器
@Entity public class Student { private BigInteger id; private int age; private String name; @Id //@GeneratedValue(strategy=GenerationType.TABLE,generator = "TB_GEN") @GeneratedValue(strategy = GenerationType.IDENTITY, generator = "java5_uuid") @GenericGenerator(name = "java5_uuid", strategy = "com.woxiaoe.study.hibernate.util.UUIDGenerator")//自定义的生成策略 @Column(name = "id", precision = 65, scale = 0)//定义字段长度 public BigInteger getId() { return id; }
身世酒杯中,万事皆空。
古来三五个英雄。
雨打风吹何处是,汉殿秦宫。
梦入少年丛,歌舞匆匆。
老僧夜半误鸣钟。
惊起西窗眠不得,卷地西风。