取值 | 说明 |
---|---|
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(不拉群 发广告者勿加)
热门评论