![]() |
1
3
我以前没有使用过xstream,但是我已经序列化了hibernate托管的实体。这不好玩。 有两大问题:
前者是显而易见的-您需要实际的数据来序列化。后者则不那么重要-针对集合接口声明的任何一对多关系(例如:
我最后写了反射代码(实际上是内省的)实现了这一点:
注意,步骤2很重要-如果在关闭会话之前替换了集合,hibernate只会在关闭时重新放置自己的集合… 编辑: @cliff.meyers发现了一个我忘了提到的实现细节:如果这样做,您需要限制对象图只对自己的实体进行遍历,并注意循环引用路径(例如:通过缓存对已遍历对象的引用)。 |
![]() |
2
3
我已经想出了一些足够的解决办法。在我的应用程序中,只有persistentsets扰乱了xstream生成的xml。因此,我向xstream添加了另一个转换器(它与open hibernate会话和live对象一起运行):
序列化的XML如下所示:
在我的例子中,类属性并不重要,所以我忽略了它的值。你当然可以修补它。 |
![]() |
3
3
xstream现在提供了一个单独的模块/jar来处理hibernate集合。请看 XStream's FAQ for an example. |
![]() |
4
1
在codehaus jira上有一些关于这个(和示例代码)的信息: http://jira.codehaus.org/browse/XSTR-226 我们为其他一些远程处理实现(Axis1、BlazeDS等)编写了一些工具来解决这类问题。我们所做的与dan的解决方案非常相似,尽管我们添加了声明要行走的对象路径和要“截取”的对象路径的功能,因为在许多情况下,我们对所有数据都不感兴趣;这也会导致“n+1选择”问题的严重问题,该问题发生在成千上万的tiMES!:)我认为实现xstream转换器将是最佳方法,因为您只需遍历对象图一次。如果您在会话中设置flushmode.manual,那么您还应该能够在运行时修改对象图,而不必让hibernate做任何讨厌的事情。尽管这是一种比较先进的技术,但要小心使用。 |
|
5
1
虽然我没有使用hibernate,但我也遇到了类似的问题。我看了一下enitity修枝机,但它不完全是我要找的,因为我正在寻找一个更简单的解决方案。 我提出了一个非常简单的解决方案,它使用反射来去除cglib增强的对象,就像一个符咒。 请访问 http://www.anzaan.com/2010/06/serializing-cglib-enhanced-proxy-into-json-using-xstream/ 例如和代码。 |
![]() |
6
1
没用过,但是 xstream-for-beans 似乎合适(引用):
我写过一次自定义xstream
我用过兵马俑 Pojoizer 实用性在过去是成功的,但我认为它已经不再被维护了。 |
![]() |
Black · xstream。fromXML返回一个类 7 年前 |
![]() |
hotzst · 调试没有默认构造函数的XStream 7 年前 |
![]() |
Syed · 将XML字符串转换为Map,并使用Java获取键和值对 9 年前 |
![]() |
Igor · 更换Xstream设施 9 年前 |
![]() |
tosovvoj · 类型ad子类型的XStream集合 11 年前 |
![]() |
Aditya Kaushik · XStream错误解决方案 11 年前 |
|
zak · Spring oxm的使用 11 年前 |