javax.persistence аннотации и наследование

У меня есть 4 постоянных класса, у всех из которых есть одинаковые поля (точно), единственное различие между ними - 1) имя класса, 2) имя таблицы и 3) данные. Я знаю, что некоторым это может показаться странным, но, поверьте мне, есть веская причина, на которую я не буду здесь вдаваться.

Сейчас я использую аннотации гибернации для настройки моего класса, который должен работать следующим образом:

@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)

я предполагаю, что это потому, что суперкласс не ищет идентификатор?

есть ли способ использовать наследование в этом контексте?

спасибо, Пол.

21
задан Sean Patrick Floyd 18 August 2010 в 07:02
поделиться

2 ответа

@MappedSuperclass
public class StoreBase

См. документы для получения дополнительной информации.

39
ответ дан 29 November 2019 в 20:24
поделиться

Взгляните на @MappedSuperclass .

5
ответ дан 29 November 2019 в 20:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: