簡體   English   中英

在Spring Data Mongo中使用通用對象

[英]Using generic objects with Spring Data Mongo

我正在使用Spring Data Mongo將程序與MongoDB實例接口。 我在Mongo中存儲的存儲類型與以下類似。

@Document
class A<T> {
    @Id String id;
    Instant createdAt;
    List<T> values;
}

如您所見,通用類型T在主文檔內的屬性中使用。 我在使用查詢提取此類文檔時遇到一些問題。 我目前正在使用類似於以下語句的內容。

List<A> list = 
    mongoTemplate.find(Query.query(Criteria.where("id").in("id1", "id2"),
                       A.class,
                       "collectionName");

不幸的是,以上代碼不提供對通用字段的任何支持。 我查看了文檔和MongoTemplate的代碼,但沒有找到任何東西。

Spring的其他一些模板類提供了這種支持。 RestTemplate為例。 exchange方法的許多簽名都使用ParameterizedTypeReference<T>來實現與我正在搜索的MongoTemplate (例如this )相似的東西。

我認為,在MongoTemplate也有類似的內容將很有用。

在提取過程中是否可以處理通用類型?

謝謝。

我認為Spring Data MongoDB無法提供支持通用文檔的方法。

正如Oliver Gierke在評論中明確解釋的那樣:

沒有的子類型A<T>結合T到某種類型的,沒有點在這里,即使使用通用的類型。 您可以堅持使用List<Object>

實現所需功能的最佳方法是為每個values -type創建A的子類型。 像這樣:

@Document
public class StringA extends A<String> { ... }

@Document
public class IntegerA extends A<Integer> { ... }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM