I have a Java class which has the following structure.
class Item{
...
@Embedded("zpl")
public List<ZplList> zplList = new ArrayList<ZplList>();
@Embedded("rohs")
public List<RohsList> rohsList = new ArrayList<RohsList>();
...
//Getters and setters
}
My ZplList class looks like this.
@Embedded
public class ZplList {
@Property("csass")
public String zpl;
@Property("csasd")
public Date startDate;
@Property("csaed")
public Date endDate;
@Override
public boolean equals(Object object) {
ZplList obj = (ZplList) object;
if (this.zpl==null ? obj.zpl!=null : !this.zpl.equals(obj.zpl)) {
return false;
}
if (this.startDate==null ? obj.startDate!=null :
!this.startDate.equals(obj.startDate)) {
return false;
}
return true;
}
@Override
public int hashCode() {
int hash = 3;
hash = 7 * hash + this.zpl.hashCode();
if(this.startDate!=null)
hash = 7 * hash + this.startDate.hashCode();
return hash;
}
}
My RohsList class looks similar to ZplList class.
@Embedded
public class RohsList {
@Property("rohs")
public String rohs;
@Property("rhssd")
public Date startDate;
@Property("rhsed")
public Date endDate;
@Override
public boolean equals(Object object) {
RohsList obj = (RohsList) object;
if (this.rohs==null ? obj.rohs!=null : !this.rohs.equals(obj.rohs)) {
return false;
}
if (this.startDate==null ? obj.startDate!=null :
!this.startDate.equals(obj.startDate)) {
return false;
}
return true;
}
@Override
public int hashCode() {
int hash = 3;
if(this.rohs!=null)
hash = 7 * hash + this.rohs.hashCode();
if(this.startDate!=null)
hash = 7 * hash + this.startDate.hashCode();
return hash;
}
}
When I try to save an Item object using Morphia, I am getting an exception as follows in the datastore.save() call. Is there any issue with my annotations? Please suggest a fix for this.
14:36:29,771 ERROR [stderr] (http--127.0.0.1-8080-3) org.mongodb.morphia.mapping.MappingException: Error mapping field:com.mdm.ui.web.domain.Item.rohsList
14:36:29,773 ERROR [stderr] (http--127.0.0.1-8080-3) at org.mongodb.morphia.mapping.Mapper.toDBObject(Mapper.java:906)
14:36:29,774 ERROR [stderr] (http--127.0.0.1-8080-3) at org.mongodb.morphia.mapping.Mapper.toDBObject(Mapper.java:535)
14:36:29,774 ERROR [stderr] (http--127.0.0.1-8080-3) at org.mongodb.morphia.DatastoreImpl.entityToDBObj(DatastoreImpl.java:1322)
14:36:29,775 ERROR [stderr] (http--127.0.0.1-8080-3) at org.mongodb.morphia.DatastoreImpl.save(DatastoreImpl.java:1219)
14:36:29,775 ERROR [stderr] (http--127.0.0.1-8080-3) at org.mongodb.morphia.DatastoreImpl.save(DatastoreImpl.java:704)
14:36:29,776 ERROR [stderr] (http--127.0.0.1-8080-3) at org.mongodb.morphia.DatastoreImpl.save(DatastoreImpl.java:698)
14:36:29,777 ERROR [stderr] (http--127.0.0.1-8080-3) at com.mdm.ui.logic.dao.impl.SingleItemDaoImpl.submitItem(SingleItemDaoImpl.java:1532)
14:36:29,797 ERROR [stderr] (http--127.0.0.1-8080-3) Caused by: java.lang.ClassCastException: com.mdm.ui.web.domain.ZplList cannot be cast to com.mdm.ui.web.domain.RohsList
14:36:29,797 ERROR [stderr] (http--127.0.0.1-8080-3) at com.mdm.ui.web.domain.RohsList.equals(RohsList.java:57)
14:36:29,798 ERROR [stderr] (http--127.0.0.1-8080-3) at java.util.HashMap.put(Unknown Source)
14:36:29,798 ERROR [stderr] (http--127.0.0.1-8080-3) at org.mongodb.morphia.mapping.Mapper.toDBObject(Mapper.java:910)
14:36:29,798 ERROR [stderr] (http--127.0.0.1-8080-3) at org.mongodb.morphia.mapping.Mapper.toDBObject(Mapper.java:535)
14:36:29,799 ERROR [stderr] (http--127.0.0.1-8080-3) at org.mongodb.morphia.mapping.EmbeddedMapper.writeCollection(EmbeddedMapper.java:235)
14:36:29,811 ERROR [stderr] (http--127.0.0.1-8080-3) at org.mongodb.morphia.mapping.EmbeddedMapper.toDBObject(EmbeddedMapper.java:88)
14:36:29,812 ERROR [stderr] (http--127.0.0.1-8080-3) at org.mongodb.morphia.mapping.Mapper.writeMappedField(Mapper.java:793)
14:36:29,813 ERROR [stderr] (http--127.0.0.1-8080-3) at org.mongodb.morphia.mapping.Mapper.toDBObject(Mapper.java:904)