2011-11-29 75 views
3

是否有可能繼承jpa2.0實體中的基類的序列生成器?這樣做的目的是讓所有實體的id屬性在一個公共基類中,並且每個實體只需要定義它自己的序列的名稱。在JPA實體的基類中定義序列生成器?

這就是我想要的:基類:

public abstract class BaseClass { 

    @Id 
    @GeneratedValue(strategy = GenerationType.AUTO, generator = "mySeqGenerator") 
    Long id; 
} 

和實施

@Entity 
@SequenceGenerator(name = "mySeqGenerator", sequenceName = "the_seq") 
public class MyEntity extends BaseClass { 
    [..] 
} 

我使用Hibernate和是「HHH000138撤消此:混合繼承策略在實體層級是不允許的,忽略MyEntity中的子策略「

+0

我是否正確理解你:你是否想爲子類生成ID,儘管爲超類生成了ID?但爲什麼? ;-) –

+0

附註 - 任何非實體或非映射超類的註釋都將被JPA提供者忽略。 –

回答

0

所有生成器都是全局持久單元 despi如何定義它們(在課堂級別,現場級別的註釋或orm.xml)。

因此,您不需要「繼承」或「分享」任何東西 - 您可以使用它。

+0

嗯,我認爲你是對的,我的內涵似乎很無聊=)我必須爲每個序列創建一個生成器。 – martin

+0

如果這能夠以任何方式幫助您,您還可以重複使用許多實體的相同序列。 –