此方法为何会生成相同的单号?

mathsyang 2008-03-27 11:11:39
public synchronized long getDailyNextVal(String seqName, boolean needNew)
throws BusinessException {
long ret = 1L;
int nowDay = Calendar.getInstance().get(Calendar.DATE);
try {
SequenceHome home = (SequenceHome)
ControlRepository.getInstance().getControlInstance(Names.SEQUENCE);
Sequence seq = (Sequence) home.findByPrimaryKey(seqName);
if (nowDay != seq.getDay()) {
this.updateSequence(seq, seq.getStartby() + seq.getStep(), nowDay);
return seq.getStartby();
}
ret = seq.getSequenceNo();
this.updateSequence(seq, seq.getSequenceNo() + seq.getStep(), nowDay);
} catch (BusinessException e) {
if (needNew) {
// createSequence(seqName, 1, 2, true);
createSequence(seqName, 1, 1, true, nowDay);
} else {
log.error("sequence with name " + seqName + " not found", e);
e.setDetailInfo("sequence with name " + seqName + " not found");
throw e;
}
}
return ret;
}
...全文
65 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
hawkeyes0 2008-03-27
  • 打赏
  • 举报
回复
生成算法有问题
你可能在生成的时候只是用的日期参与计算,如果再加上时间的话重复的可能性就很小了。
因为日期一天才变化一次,而时间时刻都在变化。
另外,这种事情最好还是放在数据库来做比较好
xlongbuilder 2008-03-27
  • 打赏
  • 举报
回复
像单号这样的东东

建议用存储过程

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧