如果我的主键id 带有字母的情况下、我该如何去得到最大的id进行添加其他数据

悬赏:5 发布时间:2008-07-20 提问人:wlhbye (初级程序员)

hibernate主键id  不是自增的  id是char(5) 第一位是字母  我需要添加多条数据
我的思路是得到数据库中的最大id 值 在其基础上+1  现在出现的问题是第一位字母
报出了这样的错误 For input string: "t0001" 
!!!!!
请帮帮忙
问题补充:
public ActionForward addTemplate(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
TemplateForm templateForm = (TemplateForm) form;
try {
TemplateService templateService = (TemplateService) ServiceFactory_lh
.getTemplateService();

Template tem = new Template();
HttpSession session = request.getSession(false);
SecUser username = (SecUser) session.getAttribute("user");
String templatename=templateForm.getTemplateName();
ActionMessages errors=new ActionMessages();
if(templateService.isNameRegistered(templatename)){
errors.add("errors",new ActionMessage("errors.exist"));
saveErrors(request,errors);
return new ActionForward("/template/template01Attribute.jsp");
}else{
tem.setCreator(username.getLoginName());
tem.setTemplateName(request.getParameter("templateName"));
tem.setCreateTime(new Date());
tem.setModifyTime(new Date());
tem.setType("1");
tem.setUsedTimes(Long.valueOf("1"));
tem.setState("1");


tem.setTemplateId(String.valueOf(templateService.getMaxTemplateId()));
templateService.addTem(tem);}
} catch (RuntimeException e) {

e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}

ActionForward f = new ActionForward(
"/template.do?method=searchTemplate");
f.setRedirect(true);
return f;
}
请问在这里怎么做修改
问题补充:
/**得到最大的id值*/
public int getMaxTemplateId()  {
List list = null;
Object[] params = {};
try {
list = this
.findBySQL("select max(TEMPLATE_ID) m from template", params);

} catch (Exception e) {
e.printStackTrace();
}
BasicDynaBean b = (BasicDynaBean) list.get(0);
String temp=(String) b.get("m");
Integer i = Integer.valueOf(temp.trim());

return i.intValue() + 1;
}
该问题已经关闭: 超过15天由系统自动关闭,悬赏平分给所有参与回答的会员

回答

你得到max值时转成number 然后+的时候要求也先转成number 试试看
wxjiaaa (高级程序员) 2008-07-20
为什么你不用UUID呢?
弄的这么复杂。
eyeqq (中级程序员) 2008-07-20
我现在的做法是建个专门的记录响应表内最大ID的prk表
里面两个字段, ID 对应 目标表名
                VALUE 对应 目标表内最大字段
你生成对应表内最大字段的时候只要查下PRK表得到当前最大字段后再进行字符串拼接不就行了。
当然, 添加成功后记得更新目标表的最大字段 也就是+1
wxjiaaa (高级程序员) 2008-07-24