问题在标题中。下面我仅描述了我的一些想法和发现。
当我有一个非常简单的域模型(3个表没有任何关系)时,我所有的实体都没有实现Serializable。
但是,当域模型变得更加复杂时,我遇到了RuntimeException,它表示我的实体之一未实现Serializable。
我使用Hibernate作为JPA实现。
我想知道:
如果混合使用HQL和本机SQL查询,通常会发生这种情况。在HQL中,Hibernate将你传入的类型映射到数据库可以理解的任何类型。运行本机SQL时,必须自己进行映射。如果不这样做,则默认映射是序列化参数并将其发送到数据库(以希望它能理解它)。
如果要通过值将实体实例作为独立对象(例如,通过远程接口)传递,则实体类必须实现Serializable接口。