【问题标题】:Saving Java enums in OrientDB在 OrientDB 中保存 Java 枚举
【发布时间】:2012-11-01 02:15:22
【问题描述】:

我正在使用 OrientDB,我想在字段中保存一个枚举。比如:

db.save(new ODocument("Car").field("color", Colors.BLUE));

这是我得到的错误:

线程“主”com.orientechnologies.orient.core.exception.OSerializationException 中的异常:无法序列化对象,因为它没有实现 OSerializableStream 接口

解决此问题的简单方法是将“颜色”属性设为String,然后将其保存为Colors.BLUE.name(),但如果是这种情况,那么我很确定东方应该有某种方法为我处理这个问题,或者更好的是,某种OType 可以更有效地处理这个问题。

有谁知道使用枚举的更好方法是什么?

【问题讨论】:

  • 你用的是什么版本??
  • @ILLA 我使用的是 1.2.0 版

标签: java enums orientdb


【解决方案1】:

为该类型注册一个自定义序列化器 - 看起来您需要为此创建一个 OObjectSerializer,并将其注册到 OObjectSerializerContext。

【讨论】:

  • 您是在使用自己的名为 Colors 的枚举还是错误输入了 Color ?如果您不使用自己的枚举,那么我想您无论如何都不想按名称序列化 Color.BLUE - 重要的是info 是 RGB 成分,因为您可以保存(并再次反序列化)任何颜色。否则你会被困在少数有实际名字的人身上。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-29
  • 1970-01-01
  • 2012-11-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多