Hibernate 自定义主键生成类

本文介绍了一种自定义的主键生成策略,该策略利用日期和时间戳生成唯一标识符,并通过Hibernate框架进行实现。此外,还展示了如何在POJO类中应用此策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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();
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值