Serialization 如何序列化也将获得延迟加载关系的JPABean?

Serialization 如何序列化也将获得延迟加载关系的JPABean?,serialization,jpa,javabeans,Serialization,Jpa,Javabeans,我需要序列化jpql查询的结果,这意味着我需要序列化所有jpa bean。我希望获得所有嵌套关系,即使它们是延迟加载的,以便客户端可以在另一端反序列化而不会出错。有没有办法做到这一点?我认为您的选择是: 在序列化之前使用即时加载。 让客户机将反序列化bean合并到EntityManager中,然后根据需要读取延迟加载程序。 您想只序列化bean本身而不序列化其所有懒惰连接的“邻居”吗?那么,客户机将如何反序列化它们呢?不,我实际上想要得到它所有懒惰的连接邻居。所以重点是,我想让所有的邻居,无论他

我需要序列化jpql查询的结果,这意味着我需要序列化所有jpa bean。我希望获得所有嵌套关系,即使它们是延迟加载的,以便客户端可以在另一端反序列化而不会出错。有没有办法做到这一点?

我认为您的选择是:

在序列化之前使用即时加载。 让客户机将反序列化bean合并到EntityManager中,然后根据需要读取延迟加载程序。
您想只序列化bean本身而不序列化其所有懒惰连接的“邻居”吗?那么,客户机将如何反序列化它们呢?不,我实际上想要得到它所有懒惰的连接邻居。所以重点是,我想让所有的邻居,无论他们是懒惰的或渴望的连接与否。我希望能够调用某个方法并自动加载所有连接的邻居,即使它们是惰性连接的。对于1,是否可以在执行查询时强制立即加载:List results=em.createQueryquery.getResultList?即使bean没有将这些关系指定为fetch=FetchType.eanger,我如何强制结果中的所有bean都是eanger加载?您可以在查询要序列化的时间之前,使用反射将注释更改为eanger加载-剩下的时间保持懒惰。或者:执行查询后,读取每个延迟加载引用的集合以强制读取。我认为不可能强制从查询中加载,您必须修改实体。似乎奇怪的是,你想序列化,但使用惰性加载-你有时间,当你想它懒惰和渴望的时候?也许反射对您有用?声明所有关系的问题是,您可能会遇到超出行大小最大值的问题,因为急切加载将生成一个复杂联接。因此,如果您有许多bean和许多嵌套关系,那么实际上可以达到最大行大小限制错误。这就是为什么在许多情况下,这种关系在默认情况下是懒惰的。