问题就在标题里.下面我只描述了我的一些 idea 和发现.

当我有一个非常简单的域模型(3个没有任何关系的表)时,我的所有实体都没有实现Serializable接口.

但当域模型变得更复杂时,我得到了RuntimeException分,说我的一个实体没有实现Serializable.

我使用Hibernate作为JPA实现,我想知道:

  1. 这是供应商特定的要求/行为吗?
  2. 我的可序列化实体会发生什么?它们应该是可序列化的,用于存储还是传输?
  3. 在哪个时刻有必要使我的实体可序列化?

推荐答案

如果混合使用HQL和本机SQL查询,通常会发生这种情况.在HQL中,Hibernate将您传入的类型映射到DB理解的任何类型.运行本机SQL时,必须自己进行映射.如果没有,那么默认的映射是序列化参数并将其发送到数据库(希望它确实理解它).

Java相关问答推荐

如何在Java中对自定义协议进行主机名验证?

是否可以从@ TrustMapping中删除特定方法的基路径?

如何在Spring Boot中创建500错误的响应正文?

将具有多个未知字段的SON映射到Java POJO

Java Streams在矩阵遍历中的性能影响

Java函数式编程中的双值单值映射

在运行MVN测试时,为什么构建失败,并显示了java.lang.ClassNotFoundException:java.net.http.HttpResponse?

如何解释Java中for-each循环中对Iterable的强制转换方法引用?

如何在一行中使用Dijkstra中的Java Stream

如何使用log4j2(Json)记录由";异常引起的所有";?

Groovy/Java:匹配带引号的命令选项

允许同时执行两个方法,但不能同时执行这两个方法

try 使用Spring集成和MySQL实现发件箱模式时,锁定等待超时

有谁能帮我修一下这个吗?使输出变得更加整洁

Java组件项目中的JavaFX对话框国际化

Java中HashSet的搜索时间与TreeSet的搜索时间

在缺少字段时使用Jackson With Options生成Optional.Empty()

如何使用WebEnvironment.RANDOM_PORT获得第二个随机端口?

获取月份';s在java中非UTC时区的开始时间和结束时间

为什么我得到默认方法的值而不是被覆盖的方法的值?