Spring Boot Starter Data MongoDB:将枚举类型映射为实体中的字符串

3

我有一个实体:

@Document(collection = "test")
public class Test{

    @Id
    @Field("_id")
    private String id;

    @Field("type")
    private Type type;

...

}

这是枚举类型:

public enum Type {
    ONE("one"), TWO("two"), THREE("three");

    private final String name;

    Type (String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }
}

但是MongoDB集合中有一个名为“type”的字符串类型字段。我该如何将我的枚举转换为字符串?

findAllByType(Type type);

您的需求不清楚。所以请先澄清,再考虑点踩。 - RLD
1个回答

0

Spring Data MongoDB 能够将 枚举 类型转换为 字符串 类型。只需要使用下面的代码就能够满足你的需求。

public interface TestRepository extends MongoRepository<Test, String> {
    List<Test> findAllByType(Type type);
}

根据您的enum类,确保您的集合包含CAPS中的type字段值,例如"ONE"、"TWO"、"THREE"等,而不是"one"、"two"、"three"等。如果不是CAPS,您的查询可能不会返回任何结果。


我正在寻找类似于https://thorben-janssen.com/jpa-21-type-converter-better-way-to/的东西,但是适用于Spring Mongo。当然,我知道MongoRepository可以使用枚举,但我已经有一个字符串类型的集合,但我想在我的代码中将其用作枚举。 - Pavel Petrashov

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接