MongoTemplate 查找参数化 Class
MongoTemplate Find Parameterized Class
使用 MongoTemplate,在使用我称为对象的参数化类型的方法时,我在使用 find 方法时遇到了问题。我可能无法准确描述这个,所以我举个例子:
public class Animal<T> {
private String name
private T attributes
}
public class Dog {
private Integer weight
...
}
所以我将那些存储在 Mongo 中,例如:
{
"name": "Bernese Mountain Dog"
"attributes": {
"weight": 100
}
}
如果将其存储为 Dog 文档,我将能够执行如下操作:
mongoTemplate.find(query, Dog.class)
然后得到 List<Dog>
returned。但是如果我的 return 类型类似于 List<Animal<T>>
,那么如果我尝试做类似的事情:
mongoTemplate.find(query, Animal.class)
这将给出无法转换它的错误。这也是不可能的代码:
mongoTemplate.find(query, Animal<Dog>.class)
因为那只是错误的语法。
想法?
我最终发现有效的是:
mongoTemplate.find(query, (Class<Animal<T>>)(Class<T>) Animal.class);
这看起来很不靠谱,但确实有效。我确实收到有关未经检查的演员表的警告,如果不压制它们,我将无法解决这些问题。如果谁有更好的解决办法,请告诉我。
使用 MongoTemplate,在使用我称为对象的参数化类型的方法时,我在使用 find 方法时遇到了问题。我可能无法准确描述这个,所以我举个例子:
public class Animal<T> {
private String name
private T attributes
}
public class Dog {
private Integer weight
...
}
所以我将那些存储在 Mongo 中,例如:
{
"name": "Bernese Mountain Dog"
"attributes": {
"weight": 100
}
}
如果将其存储为 Dog 文档,我将能够执行如下操作:
mongoTemplate.find(query, Dog.class)
然后得到 List<Dog>
returned。但是如果我的 return 类型类似于 List<Animal<T>>
,那么如果我尝试做类似的事情:
mongoTemplate.find(query, Animal.class)
这将给出无法转换它的错误。这也是不可能的代码:
mongoTemplate.find(query, Animal<Dog>.class)
因为那只是错误的语法。
想法?
我最终发现有效的是:
mongoTemplate.find(query, (Class<Animal<T>>)(Class<T>) Animal.class);
这看起来很不靠谱,但确实有效。我确实收到有关未经检查的演员表的警告,如果不压制它们,我将无法解决这些问题。如果谁有更好的解决办法,请告诉我。