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