1.问题描述:
有时候在 Entity 中join 另一个 Entity例如:
public class Animal extends DTO{
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id", nullable = false, updatable = false, unique = true)
private Long id;
@OneToOne(cascade = CascadeType.ALL, fetch = FetchType.EAGER, targetEntity = People.class)
@JoinColumn(name = "id", referencedColumnName = "id", nullable = true, insertable = false, updatable = false)
private People people;
}
public class People{
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id", nullable = false, updatable = false, unique = true)
}
运行的时候会报错
cannot be cast to java.io.Serializable
2.解决在 Entity中加入 implements Serializable
public class People implements Serializable{
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id", nullable = false, updatable = false, unique = true)
}
原因:Hibernate 有二级缓存, 缓存会将对象写进硬盘。就必须序列化。以及兼容对象在网络钟的传输。