使用morphia将泛型列表Map到mongodb

xzv2uavs  于 2021-07-03  发布在  Java
关注(0)|答案(1)|浏览(321)

我想使用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。

tf7tbtn2

tf7tbtn21#

morphia不支持在db中保存泛型,因此,您可以尝试创建一个简单的接口,然后让所有要保存的类实现它,或者类似的东西。
他们有与你的第1期、第2期相关的未决问题
另外,您使用哪个morphia/mongodb/java版本?

相关问题