JSF / JPA应用程序中的多个序列号生成

时间:2014-09-26 13:53:34

标签: java mysql jsf jpa

我有一个JSF / JPA应用程序,其中有20多个用户登录系统并生成Bill类型实体。这些新生成的实体需要具有部门和帐单类型唯一的帐单号。

帐单类型示例(来自枚举)

Opd
Payment
Inward

部门类型示例(用户输入几乎无限数量的部门)

Ruhuna
Coop
Arogya

票据编号示​​例

Ruhuna/Opd/001
Ruhuna/Opd/002
Ruhuna/Payment/001
Coop/Opd/001
Ruhuna/Opd/003
Coop/Payment/001

我在一个名为Bill的实体中记录所有账单。 目前我使用应用程序范围JSF Controller(带有@Named注释)来检查BillType和Department作为参数传递后的Bills总数。我在计数中添加一个,并将BillType和Department Code的前缀添加到计数中以生成BillNo。添加账单号后不久,我坚持新创建的账单。

问题在于,如果两个用户同时从同一部门和同一账单类型结算账单,则BillNumber会重复。例如,可能有两个Ruhunu / Opd / 21300,第三个账单将作为Ruhunu / Opd / 21302。所以Ruhunu / Opd / 21301账单号丢失了。 错误示例

Ruhunu / Opd / 21300(与第二张账单同时结算。) Ruhunu / Opd / 21300(与第一张账单同时收费。) Ruhunu / Opd / 21302(Thired Bill)

绝对有必要防止生成重复号码,因为在实际设置中使用该号码来追踪账单并进行取消,退款,付款等。

请建议一种生成多个序列号的方法,以避免重复。

提前致谢。

Technical Details
    Application Server - GlassFish 3.1.2.2
    Persistence Provider - EclipseLink 2.5 (used with all possible caching methods, still failed.)
    Database - MySQL
    Number of Application Instances - One
    Clustering of Application Servers - Not at this moment
    Clustering of Database - Not at this moment

0 个答案:

没有答案