【问题标题】:Get next sequence number获取下一个序列号
【发布时间】:2011-11-15 12:09:50
【问题描述】:

我有一个类 Account,其属性为 number,其值为 fe:

130.11.0000001

[plan_code].[year].[sequential number]

现在我将这个number 属性映射为String。 因此,当我想为相同的Plan (code=130) 创建第二个Account 时,它应该得到number = 130.11.0000002

当为plan(code=100) 制作Account 时,它应该有number=100.11.0000001

我正在考虑使用 hibernate 中的 hilo 生成器,但不知道如何开始,以及是否可以使用 hilo generator。所以欢迎任何实现的指针/想法!

也许我应该开始制作 AccountNumber 类型的 number 属性,并将其作为 id 一个 hilo 生成的值?

【问题讨论】:

  • 您是否有数据库并且已经在使用 Hibernate 或者您只是想使用 Hibernate 类来生成唯一 ID?

标签: java mysql hibernate


【解决方案1】:

如何创建一个将帐号实现为三个字段的类,它是toString 产生组合?考虑到前面的实例,那么进行增量很容易。

public class AccountNumber{
     public final int planCode;
     public final int year;
     public final int sequenceNumber;

     ...

     public static AccountNumber getNextSequenceNumber(AccountNumber previous)...
}

【讨论】:

  • 但是sequenceNumber不是唯一的,只有plancode+year+sequencenumber的组合是唯一的,所以当创建plan(code=100)的帐户时,它应该有number=100.11.0000001
  • 当您尝试创建下一个时,您是否总是拥有计划代码 + 年份的最新元素?如果是这样,则传入该对象,使用它的计划代码 + 年份并增加序列号。如果没有,请创建一个Multimap<Integer, Multimap<Integer, Integer>>,其中第一个键是 planCode,第二个键是年份。
  • 或者更好Table<Integer, Integer, TreeSet<Integer>>
【解决方案2】:

看看this

您需要手动设置 planCode 和 year 并让 hibernate 使用内置生成器生成 sequenceNumber。

我还没有测试过

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-02
    • 1970-01-01
    • 1970-01-01
    • 2014-10-08
    • 2013-12-31
    • 2011-01-04
    • 1970-01-01
    相关资源
    最近更新 更多