2011-05-17 19 views
1

我正在使用Spring MVC的3個簡單的應用程序和休眠3自定義序列應該重置每年

我有一個要求,以生成以下格式ID。

Month/Year/number(number will increase). 

月份和年份值根據當前日期進行更改。 一年完成一次,比方說一個財政年度完成後的順序再次從頭開始,如月/年/數。希望我清楚。

例子:

1st Financial Year: 
Mar/2011/001 
Jun/2011/002 
Dec/2011/003 
Feb/2011/004 
... 
... 

2nd Financial Year: 
Mar/2012/001 
Mar/2012/002 
Aug/2012/003 
.. 
.. 
.. 

我怎樣才能解決這個問題? 請幫幫我。

+0

+1:好問題! – Nilesh 2011-05-17 15:17:21

回答

1

創建自定義序列生成器。您需要保留某個存儲最後一條記錄年份的記錄。每次你想通過一個新的標識符檢查這個值,以及保存的最後一條記錄是不是從今年開始更新該值並重新創建下面使用的序列。如果該值尚未設置,則可以計算它查詢最新記錄的日期。

僞代碼的位:P

public class CustomSequenceGenerator extends SequenceStyleGenerator { 

    private static Integer lastYear = null; 

    public CustomSequenceGenerator(){ 
     super(); 
    } 

    @Override 
    public Serializable generate(SessionImplementor sessionImplementator, Object object) throws HibernateException { 
     Long id = (Long)super.generate(sessionImplementator, object); 
     if (lastYear == null) { 
      getYearOfLastRecord(); 
     } 
     if (lastYear != getThisYear()) { 
      recreateDatabaseSequence(); 
      lastYear = getThisYear(); 
     } 
     String date = generateStringBasedOnDate(); 
     return date+id.toString; 
    } 

// Implement missing methods 

[....] 
} 
+0

+1好的答案。 – Nilesh 2011-05-17 15:17:33