public String getJobNumber() {
String DATE_FORMAT = "yyyyMMdd";
SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT);
Calendar calendar = Calendar.getInstance();
NumberFormat numberFormat = new DecimalFormat("0000000");
return sdf.format(calendar.getTime()) +
numberFormat.format(getId()) + jobNumber;
}
我需要一个序列表来跟踪包含字段jobNumber的表标题的id。 jobNumber的格式为20130816 * 0000001 * XXXXXX。
我以为我可以在保存时使用id(但尚未保存),以生成jobNumber。
我得到了例外:
org.hibernate.PropertyAccessException: Exception occurred inside getter of com.test.model.Header.jobNumber
如何使用表格(或其他内容)来跟踪最后一个ID?
程序应该在MySQL和Oracle 11g DB上运行。提前谢谢。
答案 0 :(得分:0)
使用表格来包含您的计数器。每次需要一个新值时,启动另一个非常短的事务,它将从表中获取计数器的值,递增它,将其保存回表中,然后返回它。然后从此计数器生成您的工作号码并将其保存到您的实体中。
如果您经常生成这样的作业编号,那么您可以使用更好的技术,如hilo算法,或将计数器递增100的技术,并将100个下一个计数器值保存在内存中的线程安全缓存中。 / p>