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?