1
使用自定義轉換器時發現問題。mongoTemplate:使用非標準對象的自定義轉換器
比方說,我的對象是:
public class Foo {
private String id;
private Bar bar;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public Bar getBar() {
return bar;
}
public void setBar(Bar bar) {
this.bar = bar;
}
}
public class Bar {
private String id;
private String property;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getProperty() {
return property;
}
public void setProperty(String property) {
this.property = property;
}
}
如果它們插入到MongoDB的,一切工作正常,只要不自定義轉換涉及。
Bar bar = new Bar();
bar.setProperty("Test");
Foo foo = new Foo();
foo.setBar(bar);
mongoTemplate.insert(bar);
mongoTemplate.insert(foo);
結果:
{
"_id" : {
"$oid" : "51a346059f2c9d656019798e"
},
"_class" : "Bar",
"property" : "Test"
}
{
"_id" : {
"$oid" : "51a346059f2c9d656019798f"
},
"_class" : "Foo",
"bar" : {
"_id" : {
"$oid" : "51a346059f2c9d656019798e"
},
"property" : "Test"
}
}
現在,我寫了一個自定義轉換器,原因美孚需要被存儲在一個特殊的方式。
public class FooWriteConverter implements Converter<Foo, DBObject> {
@Override
public DBObject convert(Foo source) {
DBObject dbo = new BasicDBObject();
dbo.put("id", source.getId());
dbo.put("bar", source.getBar());
return dbo;
}
}
現在我得到這個錯誤。
Caused by: java.lang.IllegalArgumentException: can't serialize class Bar
因此,它看起來像我不能退回到對象的屬性的默認轉換,即使用自定義轉換器轉換?
任何有用的解決方案,而不是手動進行所有轉換?
這工作正常。我如何執行回來的路? mongoConverter.read(Bar.class ...不起作用,它表示讀取的方法(類 ...不適用於參數類 –
Nabor
我撤回了這個問題,不知道什麼是錯誤的,但它的工作原理讀。 – Nabor