Morphia MappingException: a type could not be found for field null.null

痴心易碎 提交于 2019-12-24 03:28:08

问题


I'm trying to upgrade Morphia from .108 to 1.01 in some code I've inherited. There's a class that looks like:

@Entity(value="audit", noClassnameStored=true)
public class AuditEntry<T>  {
    @Id
    private ObjectId id;

    @Embedded
    private Delta<T> delta;

    public ObjectId getId() {
        return id;
    }

    public void setId(ObjectId id) {
        this.id = id;
    }


    public Delta<T> getDelta() {
        return this.delta;
    }

    public void setDelta(Delta<T> delta) {
        this.delta = delta;
    }
}

Then the embedded delta class:

@Embedded
public class Delta<T> {
    private Map<String, Object> before;
    private Map<String, Object> after;

    private Delta() { }

    public Delta(Map<String, Object> before, Map<String, Object> after) {
        this.before = before;
        this.after = after;
    }

    public void setBefore(Map<String, Object> before) {
        this.before = before;
    }
    public Map<String, Object> getBefore() {
        return (this.before == null ? Collections.<String, Object>emptyMap() : this.before);
    }
    public void setAfter(Map<String, Object> after) {
        this.after = after;
    }
    public Map<String, Object> getAfter() {
        return (this.after == null ? Collections.<String, Object>emptyMap() : this.after);
    }
}

After upgrading the Morphia version, this now breaks during mapping as follows:

Caused by: org.mongodb.morphia.mapping.MappingException: A type could not be found for the field null.null
    at org.mongodb.morphia.mapping.MappedField.discoverType(MappedField.java:211)
    at org.mongodb.morphia.mapping.MappedField.<init>(MappedField.java:101)
    at org.mongodb.morphia.mapping.EphemeralMappedField.<init>(EphemeralMappedField.java:36)
    at org.mongodb.morphia.mapping.MappedField.discoverType(MappedField.java:189)
    at org.mongodb.morphia.mapping.MappedField.discover(MappedField.java:117)
    at org.mongodb.morphia.mapping.MappedField.<init>(MappedField.java:95)
    at org.mongodb.morphia.mapping.MappedClass.discover(MappedClass.java:214)
    at org.mongodb.morphia.mapping.MappedClass.<init>(MappedClass.java:145)
    at org.mongodb.morphia.mapping.Mapper.addMappedClass(Mapper.java:163)
    at org.mongodb.morphia.Morphia.map(Morphia.java:67)
    at org.mongodb.morphia.Morphia.mapPackage(Morphia.java:114)
    at org.mongodb.morphia.Morphia.mapPackage(Morphia.java:96)

The Delta class seems unnecessarily generified, but I'm disinclined to change it, especially when it was working before and I was under the impression this is something Morphia supports. Why has this started breaking?

来源:https://stackoverflow.com/questions/32014115/morphia-mappingexception-a-type-could-not-be-found-for-field-null-null

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!