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;
    }

 

 

 

 

posted on 2013-02-18 15:19  青春丶冭柔情  阅读(167)  评论(0编辑  收藏  举报

导航