当前位置: 首页 > 知识库问答 >
问题:

使用Morphia将泛型列表映射到MongoDB

涂飞航
2023-03-14
public class KPI<T> {

    public ArrayList<T> kpiList;
}
Morphia morphia = new Morphia();
morphia.map(KPI.class);

当我尝试将一个名为someKPIObject对象的KPI实例添加到Mongodb时,使用

MongoClient mongoClient = new MongoClient(addr);
AdvancedDatastore datastore = (AdvancedDatastore) morphia.createDatastore(mongoClient, "myDB");
datastore.insert(myDoc,someKPIObject);

我得到以下错误:

警告:参数化类型被视为非类型化对象。请参见类KPI org.mongodb.morphia.mapping.mapping.mapping.mapping.mapper.todbobject(mapper.java:984)在org.mongodb.morphia.mapping.mapper.todbobject(mapper.java:593)在org.mongodb.morphia.datastoreimpl.entitytodbobj(datastoreimpl.java:1362)在org.mongodb.morphia.datastoreimpl.insert(astoreimpl.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.mapper.writeMappedField(Mapper.java:876)todbobject(Mapper.java:982)...6个以上

我做错了什么,有可能吗?我使用Java1.8。

共有1个答案

诸葛立果
2023-03-14

Morphia不支持在DB中保存泛型,所以,您可以尝试创建一个简单的接口,然后让所有要保存的类实现它,或者类似的东西。

他们有与您的问题1,2相关的未解决问题

另外,您使用的是哪个Morphia/MongoDB/Java版本?

 类似资料:
  • 假设我有两个通用列表。我想将一个泛型值从列表映射到另一个泛型值。 因此列表<.NameAndSurnamedTo>需要映射到另一个列表<.NameAndSurnamedToTwo>。 做这样的手术最好的方法是什么?

  • 我试图使用http://modelmapper.org/表示DAO和模型类的库- 模型类- 道类- 公共类主题{私有字符串名称; 映射逻辑 ModelMapper似乎不起作用,它给我提供了主题类项目,而不是主题模型类项目

  • 简短说明: 我在将mongo DB中的文档读入具有泛型属性的java类时遇到了困难。错误显示 ...但是当我试着从数据库里读... ...我得到以下异常: 我确实发现了一些关于泛型和morphia的讨论,但老实说,我不知道如何将这些应用到我的问题上。 我在运行Morphia 1.5.8

  • 我的数据库表有几个列。 我需要使用Spring将这些列映射到我的数据模型: 在中,我将json解析为一个Java,然后在返回多个时通过流式处理找到合适的值。我还有几个额外的jsonb列,我在

  • 错误: 我希望在列表中映射相同的字段名,而不需要另一个单独的方法,就像在另一个项目中使用旧的版本时一样。

  • 我想将泛型类型<code>Y</code>的对象映射到另一个泛型类型为<code>X</code>的对象。在mapstruct中有这样的功能吗?或者我必须为通用映射编写自定义映射器吗?当我编译上面的代码时,会出现编译错误。