我想使用mongodb java驱动程序(v3.4.2)和morphia(v1.3.2)将包含泛型列表的泛型对象Map到mongodb,如下所示:
public class KPI<T> {
public ArrayList<T> kpiList;
}
我曾经
Morphia morphia = new Morphia();
morphia.map(KPI.class);
当我尝试使用将名为somekpiobject object的kpi示例添加到mongodb时
MongoClient mongoClient = new MongoClient(addr);
AdvancedDatastore datastore = (AdvancedDatastore) morphia.createDatastore(mongoClient, "myDB");
datastore.insert(myDoc,someKPIObject);
我得到以下错误:
警告:参数化类型被视为非类型化对象。请参见类kpi org.mongodb.morphia.mapping.mappingexception:错误Map上的字段“kpilist”field:kpi.kpilist at org.mongodb.morphia.mapping.mapper.todbobject(Map器。java:984)在org.mongodb.morphia.mapping.mapper.todbobject(mapper。java:593)在org.mongodb.morphia.datastoreimpl.entitytodbobj(datastoreimpl。java:1362)在org.mongodb.morphia.datastoreimpl.insert(datastoreimpl。java:1227)在org.mongodb.morphia.datastoreimpl.insert(datastoreimpl。java:1046)在mongoconnector.mongoconnector.addnewentry(mongoconnector。java:97)在parser.main(parser。java:31)
原因:java.lang.runtimeexception:不支持泛型typevariable!在org.mongodb.morphia.mapping.mappedfield.toclass(mappedfield。java:639)在org.mongodb.morphia.mapping.mappedfield.getsubclass(mappedfield。java:313)在org.mongodb.morphia.mapping.embeddedmapper.shouldsaveclassname(embeddedmapper。java:29)在org.mongodb.morphia.mapping.embeddedmapper.writecollection(embeddedmapper。java:242)在org.mongodb.morphia.mapping.embeddedmapper.todbobject(embeddedmapper。java:90)在org.mongodb.morphia.mapping.mapper.writemappedfield(mapper。java:876)在org.mongodb.morphia.mapping.mapper.todbobject(mapper。java:982) ... 6个以上
我做错了什么,有可能吗?我使用Java1.8。
1条答案
按热度按时间tf7tbtn21#
morphia不支持在db中保存泛型,因此,您可以尝试创建一个简单的接口,然后让所有要保存的类实现它,或者类似的东西。
他们有与你的第1期、第2期相关的未决问题
另外,您使用哪个morphia/mongodb/java版本?