Java 如何在具有Spring数据MongoDB的实体中设置@TextIndex名称

Java 如何在具有Spring数据MongoDB的实体中设置@TextIndex名称,java,spring,mongodb,spring-data,spring-data-mongodb,Java,Spring,Mongodb,Spring Data,Spring Data Mongodb,我有一个实体人,由音乐家和政治家继承,还有一个存储库PersonRepository 我试图使用PersonRepository.save(..)默认方法将所有三个实体保存到MongoDB中的a集合“person”,但Spring Data MongoDB将其保存到3个单独的集合“person”、“Musitor”和“Political” Java代码: 是否有任何方法可以设置TextIndex名称,而不是以我正在保存的实体类命名它。尝试搜索,但无法找到任何 目前无法使用基于注释的设置设置Tex

我有一个实体,由音乐家政治家继承,还有一个存储库PersonRepository

我试图使用PersonRepository.save(..)默认方法将所有三个实体保存到MongoDB中的a集合“person”,但Spring Data MongoDB将其保存到3个单独的集合“person”、“Musitor”和“Political”

Java代码:


是否有任何方法可以设置TextIndex名称,而不是以我正在保存的实体类命名它。尝试搜索,但无法找到任何

目前无法使用基于注释的设置设置
TextIndex
的索引名称。为此,请通过
模板使用
索引操作
手动设置文本索引

template.indexOps(Person.class)
.ensureIndex(
新的TextIndexDefinitionBuilder()
.named(“YourIndexNameHere”)
恩菲尔德先生(“传记”)
.build());

尝试了此操作,但如果手动创建的TextIndex名称与{class name}\u TextIndex不同,则无论何时执行findXXX mongoTemplate,都会抛出一个异常,说明{class name}\u TextIndex未找到。我已设置了一个示例,所有操作似乎都按预期进行。请仔细看看。谢谢你的样品。我想我错过了手动设置文本索引的部分。尝试手动添加索引时,我没有删除TextIndex注释。工作起来很有魅力。谢谢但是仍然想知道为什么spring mongodb TextIndex没有根据带注释的集合名称命名。我研究了创建TextIndex部分的一些代码。集合名称将在那里使用。@ChristophStrobl我使用您的PR作为答案:)
@Document
public class Person {
    @Id private String id;

    @Indexed private String name;

    @TextIndexed private String biography;
}

@Document  
public Musician extends Person {
    private String something;
}

@Document  
public Politician extends Person {
    private String somethingElse;
}

@Repository
public interface PersonRepository extends CrudRepository<User, String> {
}
db.person.getIndexes()
[
    {
        "v" : 1,
        "key" : {
                "_id" : 1
        },
        "name" : "_id_",
        "ns" : "test.person"
    },
    {
        "v" : 1,
        "key" : {
                "_fts" : "text",
                "_ftsx" : 1
        },
        "name" : "Musician_TextIndex",
        "ns" : "test.person",
        "weights" : {
                "description" : 1,
                "name" : 10
        },
        "default_language" : "english",
        "language_override" : "language",
        "textIndexVersion" : 3
    }
]