Java中解决 cannot be cast to java.io.Serializable的问题

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 有二级缓存, 缓存会将对象写进硬盘。就必须序列化。以及兼容对象在网络钟的传输。

你可能感兴趣的:(java)