2010-08-18 24 views
15

Hepsi aynı alanları (tam olarak) olan 3 kalıcı sınıfı var 1) sınıf adı, 2) tablo adı ve 3) veri. Bunun biraz garip gelebileceğinin farkındayım ama bana güvenmeyeceğim iyi bir sebep var. ..javax.persistence ek açıklamaları ve kalıtım

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

ve bu tek tek başına sınıf için ise birçok alanlar bulunur, çalışır:

şimdi, ben çok gibi çalışması gerekir benim sınıf yapılandırmak için ek açıklamaları hazırda bekleme kullanıyorum yani, harita ve ben her dört benzer sınıflar için bir vuruşta hepsini yapmak istiyorum: Ancak

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 
{} 

bu girişimi sırasında ı aşağıdaki özel durum alıyorum:

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) 

Bunun, süper sınıfın tanımlayıcı için aranmadığı için olduğunu tahmin ediyorum?

Bu bağlamda mirastan yararlanmanın bir yolu var mı?

Teşekkürler, Paul.

+1

etiketleri değiştirildi. Bu hazırda bekletme ek açıklamaları ile ilgili değil, hazırda bekleme modundayken jpa hakkında –

cevap

27
@MappedSuperclass 
public class StoreBase 

Daha fazla bilgi için bkz. docs.