Как доказать, что JPA Enity не должен быть финальным классом с Hibernate 5 - PullRequest
1 голос
/ 19 января 2020

JSR 338: Java TM Постоянство API 2.1 Спецификация> 2.1 Класс сущности указывает:

Класс сущности не должен быть окончательным. Никакие методы или постоянные переменные экземпляра класса сущностей не могут быть окончательными.

Поэтому я попытался с помощью Hibernate 5.2.18.Final доказать это, задав для класса сущности final:

@EqualsAndHashCode
@Getter
@Setter
@Entity
public final class City {
    @Id
    @SequenceGenerator(name="city_sequence", sequenceName="city_seq", initialValue=0, allocationSize=25)
    @GeneratedValue(strategy=SEQUENCE, generator="city_sequence")
    private int id;
    @Column(length=20, nullable=false)
    private String city;
    @ManyToOne(fetch = FetchType.LAZY)
    private Province province;
}

Однако результат превзошел все мои ожидания: соответствующая таблица может быть сгенерирована, а новый экземпляр City может быть сохранен в базе данных, что означает, что мой код доказывает, что класс сущности может быть final

Вопрос: Есть ли лучший способ доказать, что класс сущностей не должен быть окончательным? Разве это не жесткое правило, как в спецификации?

...