2010-08-18 94 views
15

我有4個持久化類,它們都具有相同的字段(正好),它們之間唯一的3個區別是1)類名,2)表名和3)數據。我知道這對某些人來說可能看起來很陌生,但請相信我有一個很好的理由,我不會進入這裏。javax.persistence註釋和繼承

現在,我使用Hibernate註釋來配置我的類,它應該像這樣:

@Entity 
@Table(name = "store") 
public class Store 
{ 
@Id 
@Column(name = "unique_id") 
protected String id; 
@Column 
protected String category; 
... 
} 

..而這樣做的工作,對於一個獨立的階層,但現在有很多領域地圖和我想要做的這一切在一重擊所有四個相似的類,即:

public class StoreBase 
{ 
@Id 
@Column(name = "unique_id") 
protected String id; 
@Column 
protected String category; 
... 
} 

@Entity 
@Table(name = "store1") 
public class Store1 extends StoreBase 
{} 

@Entity 
@Table(name = "store2") 
public class Store2 extends StoreBase 
{} 

@Entity 
@Table(name = "store3") 
public class Store3 extends StoreBase 
{} 

@Entity 
@Table(name = "store4") 
public class Store4 extends StoreBase 
{} 
然而

時嘗試此我得到以下異常:

Caused by: org.hibernate.AnnotationException: No identifier specified for entity: package.entities.Store1 
at org.hibernate.cfg.AnnotationBinder.bindClass(AnnotationBinder.java:672) 
at org.hibernate.cfg.AnnotationConfiguration.processArtifactsOfType(AnnotationConfiguration.java:546) 
at org.hibernate.cfg.AnnotationConfiguration.secondPassCompile(AnnotationConfiguration.java:291) 
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1292) 
at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:867) 

我猜這是因爲超級類不被搜索的標識符?

有沒有在這種情況下利用繼承的方法?

謝謝,保羅。

+1

已更改標籤。這不是關於hibernate註釋,而是關於使用hibernate的jpa – 2010-08-18 07:03:34

回答

27
@MappedSuperclass 
public class StoreBase 

請參閱docs瞭解更多信息。