datastore.save - Mapping Exception due to ClassCast Exception

23 views
Skip to first unread message

Anirudh Madhavan

unread,
May 4, 2017, 2:22:26 AM5/4/17
to Morphia
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)

Anirudh Madhavan

unread,
May 4, 2017, 2:26:39 AM5/4/17
to Morphia
Using Morphia 1.2.0 and JRE7.
Reply all
Reply to author
Forward
0 new messages