1
2
这里的问题是,从hibernate获取的对象属于某个hibernate代理类,而不是实际的实体类。这是冬眠的正常行为。 这个代理类是自动生成的,它的serialVersionUID也是自动生成的。 一般来说,直接序列化/发送实体类对象不是一个好的做法,因为这样的问题,但也因为延迟初始化和所有与将对象绑定到实体管理器上下文相关的问题。 最常见的解决方案是创建“数据传输对象”或DTO,这些对象可能具有相同的字段(或非常相似的字段,如用字符串替换枚举等,这取决于您需要什么),而不是其他。根据您的示例,您可以有这样一个类:
(类似地,您也需要创建ClientDTO类)。 相反,对于外部(外部不一定是远程的,只要您需要从EM上下文中分离)通信,请使用该类。 您可以手动填充,也可以通过任何其他方式填充(例如使用BeanUtils的反射,带有复制属性的Company参数的构造函数[我不建议这样做,因为它会中断应用程序层分离,但就本次对话而言,这是一种有效的方式])。唯一重要的是从实体管理器上下文中填充它 |
2
0
在您的
你可以看到 in this link 如何生成serialVersionUID。 有关更多信息,请参见 response 。 |
Mickey Hovel · ejb计时器的不同处理程序 7 年前 |
rado · 无状态bean如何处理单例bean? 7 年前 |
Mark · 如何使状态可用于“会话”中的所有bean? 7 年前 |