ric*_*din 4 java generics spring spring-data-mongodb
我正在使用 Spring Data Mongo 将我的程序与 MongoDB 实例连接起来。我在 Mongo 内部存储了类似于以下的类型。
@Document
class A<T> {
@Id String id;
Instant createdAt;
List<T> values;
}
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,泛型类型T
用于主文档内的属性中。我在使用查询提取此类文档时遇到一些问题。我目前正在使用类似于以下语句的内容。
List<A> list =
mongoTemplate.find(Query.query(Criteria.where("id").in("id1", "id2"),
A.class,
"collectionName");
Run Code Online (Sandbox Code Playgroud)
不幸的是,上面的代码不提供对通用字段的任何支持。我查看了文档和代码MongoTemplate
,但没有找到任何东西。
Spring 的其他一些模板类提供了这种支持。举RestTemplate
个例子。有许多exchange
方法的签名使用 aParameterizedTypeReference<T>
来实现与我正在搜索的类似的东西MongoTemplate
(例如this )。
在我看来,在MongoTemplate
.
有没有办法在提取过程中处理泛型类型?
谢谢。
我认为没有办法使用 Spring Data MongoDB 支持通用文档。
正如 Oliver Gierke 在他的评论中明确解释的那样:
A<T>
如果没有绑定到某种类型的子类型T
,那么即使在这里使用泛型类型也是没有意义的。你可以坚持下去List<Object>
。
A
实现您需要的最好方法是为每种类型创建一个子类型values
。像这样的东西:
@Document
public class StringA extends A<String> { ... }
@Document
public class IntegerA extends A<Integer> { ... }
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
6340 次 |
最近记录: |