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

匿名 (未验证) 提交于 2019-12-03 00:59:01

问题:

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?

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