| 取值 | 说明 |
|---|---|
GenerationType.TABLE | 使用一个特定的数据库表格来保存主键 |
GenerationType.SEQUENCE | 根据底层数据库的序列来生成主键,条件是数据库支持序列 |
GenerationType.IDENTITY | 主键由数据库自动生成(主要是自动增长型)mysql用 |
GenerationType.AUTO | 主键由程序控制,mysql会生成表 |
//给定ID方式,id存在给指定 ,不存在由数据库自增
package com.admin.dao;
import org.hibernate.MappingException;
import org.hibernate.engine.spi.SharedSessionContractImplementor;
import org.hibernate.id.IdentityGenerator;
import java.io.Serializable;
public class IDGenerator extends IdentityGenerator {
@Override
public Serializable generate(SharedSessionContractImplementor session, Object object) throws MappingException {
//取值
Serializable id = session.getEntityPersister(null, object).getClassMetadata().getIdentifier(object, session);
if (id != null) {
return (Serializable) id;
}
return super.generate(session, object);
}
}
//自定义的字符型ID
package com.admin.dao;
import org.hibernate.MappingException;
import org.hibernate.engine.spi.SessionImplementor;
import org.hibernate.id.UUIDGenerator;
import java.io.Serializable;
import java.text.SimpleDateFormat;
import java.util.Date;
public class IDGenerator extends UUIDGenerator {
@Override
public Serializable generate(SessionImplementor session, Object object) throws MappingException {
SimpleDateFormat simpleDateFormat;
simpleDateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
Date date = new Date();
String str = simpleDateFormat.format(date);
return str;// 当前时间
}
}
//调用方式,注 generatorid name 要统一ID
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY,generator="id")
@GenericGenerator(name = "id",strategy = "com.admin.dao.IDGenerator")
private Integer id;
注字符型ID 与 long ID 继承对象不同
其实GeneratedValue 不需要,ID则必须给定,与方案2功能相同
关注"都市百货" 了解南陵
微信咨询wanglf2r(不拉群 发广告者勿加)
0
0
2021年南陵计划生育补贴
南陵2021年度独生子女保健费名单
南陵2021年四员扶贫公益性岗位补
南陵2020年度农机购置补贴名单
南陵2021年农业补贴名单
南陵县2021年扶贫小额信贷
南陵2021年城乡居保财政代缴和另
2020年南陵创业担保贷款名单
热门评论