问题场景:在JPA中使用Hibernate管理实体,创建了实体和数据库表的映射,但是删掉数据库表之后并且重启项目的时候数据库表不能根据JAVA实体类生成,EntityManagerFactory配置如下:
解决:
确保实体类实现了java.io.Serializable接口,并且有serialVersionUID属性,如下:
@Entity
@Table(name="SS_LOG")
public class Log extends BaseEntity {
private static final long serialVersionUID = 1L;
......
}
serialVersionUID作用:Java的序列化机制是通过在运行时判断类的serialVersionUID来验证版本一致性的。在进行反序列化时,JVM会把传来的字节流中的serialVersionUID与本地相应实体(类)的serialVersionUID进行比较,如果相同就认为是一致的,可以进行反序列化,否则就会出现序列化版本不一致的异常。