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
问题:有没有更好的方法来证明实体类不能是最终的?这不是规范中的硬性规则吗?