您的位置:首页 > 其它

Hibernate 自定义主键生成类

2016-03-17 21:29 288 查看
转自: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();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: