自定義主鍵的生成策略
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);
}
}