我遇到了一个我尚未面对的问题。 我想使用Morphia在MongoDB中存储一个带有嵌入对象的Object。
看起来它完全理解如何对顶级类进行去序列化,而不是嵌入式进程。以下是两个类:
@Embedded
@Getter
@Setter
@ToString
public class HomeLocation extends DatastoreEntity {
@Id
private ObjectId id;
private String homeName;
@Property("location")
private Document document;
public Location getLocation() {
return deserialize(document);
}
public void setLocation(Location location) {
document = serialize(location);
}
private Document serialize(Location location) {
return new Document("world", location.getWorld())
.append("x", location.getX())
.append("y", location.getY())
.append("z", location.getZ())
.append("yaw", location.getYaw())
.append("pitch", location.getPitch());
}
private Location deserialize(Document document) {
return new Location(Bukkit.getWorld((String) get("world")), (double) get("x"), (double) get("y"), (double) get("z"), (float) get("yaw"), (float) get("pitch"));
}
private Object get(String key) {
return document.get(key);
}
static {
datastore.ensureIndexes(HomeLocation.class);
}
}
和
var canvas = new fabric.Canvas('c');
var site_url = 'https://instathumbs.com.s3.amazonaws.com/assets/items/Image/Graphics/blueprint.svg?1';
fabric.loadSVGFromURL(site_url, function(objects, options) {
var obj = fabric.util.groupSVGElements(objects, options);
obj.set({
left:50,top:50,scaleX:4,scaleY:4
})
canvas.add(obj).renderAll();
});
正如您所看到的,通过静态类初始化将两个类添加到Morphia索引中。这适用于HomeLocation.class的所有其他类,它不起作用。
你们有任何想法如何解决这个问题吗? 我还尝试在初始化Morphia时手动将类添加到Morphia索引,但这也不起作用。
我希望你能帮助我。
敬意,
Fabian Schmidt
答案 0 :(得分:0)
我知道这是一篇旧文章,但是分享我的解决方案希望能对其他人有所帮助。
在您的情况下,您应该更改此设置:
@Property("homes")
@Embedded
private Map<String, List<HomeLocation>> homeLocations;
对此:
@Embedded("homes")
private Map<String, List<HomeLocation>> homeLocations;
并且无需在HomeLocation类的顶部添加@Embedded注释。