自定义主键的生成策略

  • Post author:
  • Post category:其他


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

}

}



版权声明:本文为hwt_211原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。