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