转自:http://hzhlu.iteye.com/blog/803153
KeyGen类
用于生成 形如 yyyyMMDD+序号形式的主键
package keyGen;
public class OrderKeyGen implements IdentifierGenerator {
private static SimpleDateFormat preFix = new SimpleDateFormat("yyyyMMdd");
@Override
public synchronized Serializable generate(SessionImplementor arg0,
Object arg1) throws HibernateException {
String datePart = preFix.format(new Date());
String idString = datePart + System.currentTimeMillis() % 99;
return idString;
}
}
POJO类定义
package db;
@Entity
@Table(name = "t_diykey", catalog = "test")
public class TDiykey implements java.io.Serializable {
// Fields
private 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();
}