- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
长话短说:是否可以使用 Morphia 为第三方库类编写类型转换器?
长话短说:我是 Morphia 的新手。我有一个实体类,其中包含一个类型为 javax.activation.MimeType 的字段。当我尝试保存类的实例时,Morphia 提示它“无法序列化类 javax.activation.MimeType”。我尝试编写一个 TypeConverter 并将其添加到转换器列表中,但它不起作用。以下是代码片段:
@Entity
@Converters(MimeTypeConverter.class)
public class Entity {
@Id ObjectId id;
String name;
javax.activation.MimeType mimeType;
}
public class MimeTypeConverter extends TypeConverter {
@Override
public Object decode(Class targetClass,
Object fromDBObject,
MappedField optionalExtraInfo) {
MimeType mimetype;
BasicDBObject dbObject = (BasicDBObject) fromDBObject;
String mimeString = dbObject.getString("mimeType");
try{
mimetype = new MimeType(mimeString);
} catch(MimeTypeParseException ex){
mimetype = new MimeType();
}
return mimetype;
}
@Override
public Object encode(Object value, MappedField optionalExtraInfo) {
MimeType mimetype = (MimeType) value;
return mimetype.getBaseType();
}
@Override
public Class[] getSupportTypes() {
return new Class[]{MimeType.class};
}
}
Morphia morphia = new Morphia().map(Entity.class);
morphia.getMapper().getConverters().addConverter(new MimeTypeConverter());
Datastore ds = morphia.createDatastore(new MongoClient(), "test"); //UnknownHostException
Entity entity = new Entity();
entity.name = "test name";
entity.mimeType = new MimeType("text/plain"); //MimeTypeParseException
ds.save(entity); // FAILS WITH ERROR HERE
我希望 MimeType 类以“foo/bar”样式序列化,并从中反序列化。这可能吗?
最佳答案
这实际上对我使用 0.107 代码有效。我正在使用一个稍微修改过的转换器,这可能有助于我的成功。我正在使用的转换器以及测试如下。
@Entity
@Converters(MimeTypeConverter.class)
public static class MimeTyped {
@Id
private ObjectId id;
private String name;
private javax.activation.MimeType mimeType;
}
public class MimeTypeConverter extends TypeConverter {
public MimeTypeConverter() {
super(MimeType.class);
}
@Override
public Object decode(final Class targetClass, final Object fromDBObject, final MappedField optionalExtraInfo) {
try {
return new MimeType(((BasicDBObject) fromDBObject).getString("mimeType"));
} catch (MimeTypeParseException ex) {
return new MimeType();
}
}
@Override
public Object encode(final Object value, final MappedField optionalExtraInfo) {
return ((MimeType) value).getBaseType();
}
}
@Test
public void mimeType() throws UnknownHostException, MimeTypeParseException {
getMorphia().getMapper().getConverters().addConverter(new MimeTypeConverter());
MimeTyped entity = new MimeTyped();
entity.name = "test name";
entity.mimeType = new MimeType("text/plain"); //MimeTypeParseException
final DBObject dbObject = getMorphia().toDBObject(entity);
assertEquals("text/plain", dbObject.get("mimeType"));
getDs().save(entity);
}
关于morphia - 使用 Morphia 手动转换第 3 方类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22295650/
如何使用 Morphia 查询最新插入的项目 以及如何获得集合的大小? 最佳答案 这取决于你说的最新是什么意思,但如果你有一个带有创建日期的日期字段,那么你可以这样做: T latest = ds.f
在我现在的初始化代码中,我创建了 1 个 Morphia 实例并使用它来映射所有数据库中的所有类。我注意到,当我调用 ensureIndexes() 时,它将初始化一个空集合并为所有数据库中的所有集合
我是新手,所以开始吧。 试图从 MongoDb 中获取名为“Bob”的用户。 我有: UserData ud = MonConMan.instance().getDb().find(UserData.
长话短说:是否可以使用 Morphia 为第三方库类编写类型转换器? 长话短说:我是 Morphia 的新手。我有一个实体类,其中包含一个类型为 javax.activation.MimeType 的
长话短说:是否可以使用 Morphia 为第 3 方库类编写类型转换器? 长话短说:我是 Morphia 的新手。我有一个实体类,其中包含类型为 javax.activation.MimeType 的
我有一个名为 Project 的 Java 类,其 users ArrayList包含用户对象的属性。 我的项目集合看起来像 [ { "_id" : ObjectId("56410150d
所以这就是导致问题的问题...... 我使用 MongoDB 数据库在 jBoss 上运行这个 javaEE 应用程序。我使用Morphia与mongo进行通信...该应用程序具有以下基本程序组件;
我编写了一个代码,其中包含套件信息,其中嵌入了测试用例信息。我编写了 TestCase.java 和 Suite.java,它们似乎没有错误。但是使用我编写的 MongoMapper.java 我我收
com.google.code.morphia:morphia:jar:1.00-SNAPSHOT 的 POM 丢失,没有可用的依赖信息 scm:svn:svn://morphia.googl
不确定这是否可行,但可以了。 我有一个 MongoDB(使用 morphia 来访问它),其表如下所示(本示例进行了简化,但概念是相同的): { Name : "Robert", NickNames
我对 Morphia 还很陌生。有没有一种简单的方法可以进行求和、平均值、最大值、最小值等操作? 我已经看到了一些“Play”插件,但我不确定它是如何工作的,我想使用普通的 Morphia。 最佳答案
我试图了解如何使用 Morphia 正确注释基类和扩展类。给定以下示例,我应该 @Entity 到 Employee 类还是只是 Developer 类? public abstract class
我想使用 Morphia 将对象存储到 MongoDB。 但是我遇到了很多异常(exception): Exception in thread "main" java.lang.IllegalArgu
我有一个像这样的简单文档: @Entity("users") @Indexes(@Index(fields = {@Field("lastName"), @Field("firstName")}))
在我的Java方法中,我想将一个像这样的复杂查询作为参数传递给我的 MongoDB 集合: {"$or": [{"$and": [{"contextID": "AKKA"}, {"messageID"
Morphia 中以下 Mongo 查询的等价物是什么? db.events.find({ "date": { $gte: ISODate("2001-01-01") , $lt: ISODate("
为了模拟我看到的行为,我编写了这个测试(给出了完全相同的错误): @Test public void testListGenerics() { @Entity class BaseOn
我有一个嵌入式实体列表: @Embedded private List embedded = new ArrayList(); 在此列表中,我想搜索任何具有特定属性(我们称它为 foo)但不是另一个(
我是新手, 假设我有集合“UserData”并且 UserData 中有 1000 个文档。 现在我需要再添加一个名为“position”的字段。 我可以这样做吗?怎么做?或者它是如何工作的? 查看维
使用吗啡,java play 来完成作业。 我有 2 个馆藏,一个部门馆藏和代理馆藏。一个部门有很多代理人。部门类有一个带有注释@Reference 的List。 当我删除代理并尝试获取代理所在的部门
我是一名优秀的程序员,十分优秀!