1

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

问题:有没有更好的方法来证明实体类不能是最终的?这不是规范中的硬性规则吗?

4

0 回答 0