使用Morphia-MongoDB保存对象时,由于ClassCastException而获取MappingException

时间:2017-05-03 09:23:29

标签: java mongodb morphia mongo-java mongo-java-driver

我有一个Java类,它具有以下结构。

class Item{
...
@Embedded("zpl")
public List<ZplList> zplList = new ArrayList<ZplList>();
@Embedded("rohs")
public List<RohsList> rohsList = new ArrayList<RohsList>();
...
//Getters and setters
}

我的ZplList类看起来像这样。

@Embedded
public class ZplList {
@Property("csass")
@org.javers.core.metamodel.annotation.Id
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;
}

}

我的RohsList类看起来类似于ZplList类。

@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;
 }
}

当我尝试使用Morphia保存Item对象时,我在datastore.save()调用中得到如下异常。我的注释有问题吗?请为此建议修复。

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)

0 个答案:

没有答案