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