自定义主键的生成策略

z在想相对应的pojo类的配置文件中设置成以下:

 <id name="ckid" type="java.lang.String">

            <column name="ckid" length="14" />

            <generator class="com.pojo.MyId" />

  </id>

写个MyId的实现类

public class MyId implements  org.hibernate.id.IdentifierGenerator{//这里不要搞错了,是实现了identifierGenerator的接口

//外部调用 session.save(table2);

//这个方法里面不能写hql语句,所以1.用jdbc 2.hql写在配置文件

public Serializable generate(SessionImplementor session, Object arg1)

throws HibernateException {

//获取query对象

//如果这里是把<query></query>标签写在xxx.hbm.xml的<class>里面,就需要写上全名:如hwt.bean.Dep.getMaxId

Query  query = session.getNamedQuery("getMaxId");

//格式化日期

SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");

String today = sdf.format(new Date());

query.setParameter(0, "CK"+today+"%");

//得到最大编号

String  id = (String) query.uniqueResult();

if (id==null)

return "CK"+today+"0001";

return  "CK"+(Long.parseLong( id.substring(2) )+1);

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值