【发布时间】:2012-12-24 04:48:52
【问题描述】:
我正在使用具有透明激活/持久性的 db4o 8.0 ... 我有一个包含 EnumSet (和其他东西)的类。我实例化,将枚举值添加到集合和存储中。当我在数据库中搜索时,获取它并尝试激活我得到这个异常的对象:
Exception in thread "main" java.lang.ClassCastException: class Resources.Enums$fooEnum_t != null
at java.util.EnumSet.typeCheck(EnumSet.java:380)
at java.util.RegularEnumSet.add(RegularEnumSet.java:160)
at java.util.RegularEnumSet.add(RegularEnumSet.java:36)
at com.db4o.typehandlers.CollectionTypeHandler.addToCollection(CollectionTypeHandler.java:120)
at com.db4o.typehandlers.CollectionTypeHandler.activate(CollectionTypeHandler.java:45)
at com.db4o.internal.Handlers4.activate(Handlers4.java:300)
...
...
要将 enumSet 存储到 db4o 中,我使用:
config.common().objectClass(EnumSet.class).translate(new com.db4o.config.TSerializable());
我不知道问题出在哪里。有什么想法吗?
编辑:
我不知道在哪里可以询问有关 db4o 的问题。 SO 社区似乎对 db4o 不太活跃。这是因为 db4o 不是很受欢迎还是有其他地方可以“支持”?
编辑 2:
我在 versant 的论坛上发现该帖子可能相关但无济于事:
http://community.versant.com/Forums/tabid/98/aft/1046/Default.aspx#3370
我又认出了一件事。没有对 java.util.EnumMap 和 java.util.EnumSet 的内置支持,db4o 会抛出一个 异常,因为没有默认构造函数,并且所有具有空参数的构造函数对于这些类都将失败。 Db4o.configure().objectClass("java.util.EnumMap").translate(new com.db4o.config.TSerializable()) 当然会解决这个问题。 我觉得应该支持标准的集合框架。
【问题讨论】:
标签: exception db4o object-oriented-database enumset oodb