1. 程式人生 > >自定義主鍵的生成策略

自定義主鍵的生成策略

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

}

}