2017-04-15 68 views
1

我試圖在包級別創建一個@GenericGenerator註釋,以便它可以被包中的所有實體使用。org.hibernate.AnnotationException:未知的Id.generator:ID_GENERATOR

1)I具有與註釋的package-info.java類:

@org.hibernate.annotations.GenericGenerator(name = "ID_GENERATOR",     strategy = "enhanced-sequence", parameters = { 
    @org.hibernate.annotations.Parameter(name = "sequence_name", value = "JPWH_SEQUENCE"), 
    @org.hibernate.annotations.Parameter(name = "initial_value", value = "1000") }) 
package com; 

2)在相同的包,我有一個具有以下屬性的實體:

@Id 
@GeneratedValue(generator = "ID_GENERATOR") 
private Long id; 

此導致「未知Id.generator:ID_GENERATOR」異常。如果我在實體類中包含@GenericGenerator註釋,它可以正常工作。但是,我想將其移至包級別,以便在其他實體中重用它。

任何想法可以斷開連接?

謝謝!

回答

1

我認爲你犯了一個設計錯誤。 如果你想在你的模型類之間有一個共同的東西,使用繼承。 您可以創建一個定義id生成器的AbstractEntity類。你的模型的每個類都從這個抽象中繼承下來。 這是一種常見的模式。您還可以將傳統的常用屬性創建,創建,更新,更新,以及爲什麼不是一個sysname。 使用hibernate id生成器實際上並不合理。

再見

1

您可以將實體的代碼改成這樣:

@Id 
@SequenceGenerator(name="my_id_generator", sequenceName="ID_GENERATOR") 
@GeneratedValue(generator="my_id_generator") 
private Long id; 

來源:link