Hibernate 自定义主键生成类
KeyGen类
用于生成 形如 yyyyMMDD+序号形式的主键
package keyGen;public class OrderKeyGen implements IdentifierGenerator {private static SimpleDateFormat preFix = new SimpleDateFormat("yyyyMMdd");@Overridepublic synchronized Serializable generate(SessionImplementor arg0,Object arg1) throws HibernateException {String datePart = preFix.format(new Date());String idString = datePart + System.currentTimeMillis() % 99;return idString;}}package db;@Entity@Table(name = "t_diykey", catalog = "test")public class TDiykey implements java.io.Serializable {// Fieldsprivate String dbid;private String notes;// Constructors/** default constructor */public TDiykey() {}/** full constructor */public TDiykey(String notes) {this.notes = notes;}// Property accessors@GenericGenerator(name = "generator", strategy = "keyGen.OrderKeyGen")@Id@GeneratedValue(generator = "generator")@Column(name = "dbid", unique = true, nullable = false, length = 10)public String getDbid() {return this.dbid;}public void setDbid(String dbid) {this.dbid = dbid;}@Column(name = "notes", length = 20)public String getNotes() {return this.notes;}public void setNotes(String notes) {this.notes = notes;}}public class MyDIYKeyTest { public static void main(String[] args) {Session session = HibernateSessionFactory.getSession();Transaction tx = session.beginTransaction();TDiykey tDiykey = new TDiykey();tDiykey.setNotes("aaaa");session.save(tDiykey);tx.commit();HibernateSessionFactory.closeSession();}