2012-01-04 43 views
0

我有一個簡單的叫做Order的實體。我現在使用的ID的策略是:如何使用javax persistence/seam動態設置id號系列

@Id 
@GeneratedValue(strategy = GenerationType.AUTO) 
@Column(name = "ORDER_ID") 
private Long id; 

現在,硬編碼另一在startValue似乎很容易:

@Entity 
@SequenceGenerator(name = "SequenceIdGenerator", 
    sequenceName = "SEQ_ID_GEN", initialValue = 50, 
    allocationSize = 20) 
@Id 
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="SequenceIdGenerator") 
    @Column(name = "ORDER_ID") 
    private Long id; 

但是,這硬編碼50.我可以設置值動態?最好是如果我可以將它存儲在數據庫或屬性文件中?

或者動態設置id不是最佳實踐嗎?

回答

0

通常,但並非總是如此,最簡單的方法是在您的數據庫中創建一個序列並使用該序列。我希望在下面的例子中沒有太多的錯誤:

@Id 
@GeneratedValue(generator="IdSeq") 
@SequenceGenerator(name="IdSeq",sequenceName="SEQ_ID_GEN", allocationSize=20) 
+0

看起來不錯。但是,你如何在數據庫中創建序列?我可以從seam/java做到嗎? – 2012-01-04 15:34:19

+0

您可以使用任何具有正確權限的數據庫客戶機(命令行,GUI,JDBC等)來完成此任務。 您需要您的數據庫的文檔 - 對於PostgreSQL在這裏:http://www.sql.org/sql-database/postgresql/manual/sql-createsequence.html。 – 2012-01-04 16:17:47