Sobes.tech
Junior

Може ли класът Entity да бъде абстрактен?

sobes.tech AI

Отговор от AI

Да, може. Абстрактният клас Entity може да служи като базов клас за други същности, предоставяйки общи свойства или методи, които трябва да бъдат наследени. Това позволява да се избегне дублиране на код и да се реализира полиморфизъм. Спецификацията JPA позволява използването на абстрактни класове като родители за същности чрез стратегии за наследяване (@Inheritance).

Пример:

// Абстрактен базов клас Entity
@Entity
@Inheritance(strategy = InheritanceType.JOINED) // Пример за стратегия за наследяване
public abstract class BaseEntity {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    // Общи свойства или методи
    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }
}

Дъщерен клас Entity:

// Дъщерен клас, наследяващ от абстрактния BaseEntity
@Entity
public class ConcreteEntity extends BaseEntity {

    private String name;

    // Свойства, специфични за ConcreteEntity
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}