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

Java 使用Morphia MongoDB保存对象时由于ClassCastException而获取MappingException,java,mongodb,morphia,mongo-java,mongo-java-driver,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 } 我的RohsList类看

我有一个Java类,它的结构如下

class Item{
...
@Embedded("zpl")
public List<ZplList> zplList = new ArrayList<ZplList>();
@Embedded("rohs")
public List<RohsList> rohsList = new ArrayList<RohsList>();
...
//Getters and setters
}
我的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)

你能把
RohsList
添加到帖子中吗?@Veeram添加了这个类。你的类和映射看起来不错。您能添加其余的代码来重现这个问题吗?@Veeram我只是填充这个Item对象并执行datastore.save。它抛出了这个异常。我验证了zplList和rohsList不为null,并且只包含相应的对象。能否在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)