Я новичок в JPA, так что, может быть, кто-нибудь объяснит мне, как правильно аннотировать абстрактные классы с помощью JPA? У меня есть абстрактный класс с сгенерированным полем идентификатора:
public abstract class AbstractClass implements Serializable {
private static final long serialVersionUID = 1L;
private long id;
@Id
@GeneratedValue
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
}
и абстрактный класс с именем, которое расширяет AbstractClass:
public abstract class AbstractNameClass extends AbstractClass {
private String shortName;
@Column(name = "shortName", nullable = false)
public String getShortName() {
return shortName;
}
public void setShortName(String shortName) {
this.shortName = shortName;
}
}
У меня есть два типа классов, один расширяет AbstractClass и другие classes extends AbstractNameClass:
@Entity
public class Model extends AbstractNameClass {
// this class should inherit id (from AbstractClass) and shortName (from AbstractNameClass)
}
и
@Entity
public class Vehicle extends AbstractClass {
// this class should inherit only id
}
Если я добавлю аннотацию @MappedSuperclass в AbstractClass, я смогу создавать и сохранять объекты, которые расширяют AbstractClass, но как аннотировать AbstractNameClass? Я попытался добавить аннотацию @Entity, но получил ошибку «Не указан идентификатор для объекта», также я попытался добавить аннотацию @MappedSuperclass и тоже получил ту же ошибку. Итак, мой вопрос: как правильно аннотировать абстрактные классы с помощью JPA без создания таблиц AbstractClass и AbstractNameClass (в моем db я хочу иметь только таблицы Model и Vehicle)?