gpt4 book ai didi

java - 如何根据文档中的泛型类型使用 MongoRepository 存储到不同的集合

转载 作者:行者123 更新时间:2023-11-30 02:24:56 28 4
gpt4 key购买 nike

我正在使用 Spring Boot 1.5.6。特别是,我正在使用 Spring Boot Data MongoDB用于连接 MongoDB。

假设我有这个MongoRepository

public interface MyRepository1 extends MongoRepository<MyDocumentClass<MyResult1>, String> {
}

还有第二个

public interface MyRepository2 extends MongoRepository<MyDocumentClass<MyResult2>, String> {
}

然后我就有了我的文档

@Document(collection = "collectionName")
public class MyDocumentClass<T extends AbstractResult> {

private String myString;
private int myInt;
private List<T> results;

public MyDocumentClass(String myString, int myInt, List<T> results) {
this.myString = myString;
this.myInt = myInt;
this.results = results;
}

public String getMyString() {
return myString;
}

public int getMyInt() {
return myInt;
}

public List<T> getResults() {
return results;
}
}

当然还有AbstractResult以及 MyResult1MyResult2扩展它。

之前,MyDocumentClass不是通用的。然后代码运行得很好。但现在我想根据 T 选择不同的集合名称位于MyDocumentClass 。那可能吗?如果是,怎么办?

如果已经找到a way using MongoTemplates ,但这不是我在这里寻找的。

最佳答案

你不能这样做,因为 java 的 Type erasure 。泛型仅在编译类型下可见。因此,在运行时,JVM 无法区分 MyDocumentClass<MyResult1>MyDocumentClass<MyResult2>

但是,您可以将这些实例存储在同一个 MongoRepository<MyDocumentClass, String> 中。 .

关于java - 如何根据文档中的泛型类型使用 MongoRepository 存储到不同的集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45880048/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com