1
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 的表 Header 的 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 上运行。提前致谢。

4

1 回答 1

0

使用表格来包含您的计数器。每次您需要一个新值时,启动另一个非常短的事务,该事务将从表中获取计数器的值,将其递增,将其保存回表中,然后返回。然后从此计数器生成您的工作编号并将其保存到您的实体中。

如果您经常生成此类作业编号,那么您可以使用更好的技术,例如 hilo 算法,或者将计数器增加 100 并将 100 下一个计数器值保存在内存中的线程安全缓存中的技术。

于 2013-08-16T13:30:13.927 回答