Spring Data MongoDB支持枚举类型吗?

18
对于Java枚举类型,我了解到在MongoDB中有两种解决方案: 序列化使用Jackson的ObjectMapper。MongoRepository是否能够使用这些方法之一处理枚举数据类型?还是必须编写自定义存储库?
2个回答

20

是的,Spring Data MongoDB 支持枚举类型。只需在您的领域模型中使用它们即可。


3
谢谢Oliver。在我发布问题后,昨晚我写了一个单元测试,并且所有的测试都通过了。在发布任何内容之前我应该再做更多的工作。现在,我需要弄清楚如何用Javascript代码创建Java枚举数据类型。这是另一个故事。 - vic
这是否意味着枚举值是字符串,mongodb字段也是字符串,并且它进行区分大小写的匹配? - Adam
我已经尝试过这个,但它说它在枚举中“没有找到PersistentEntity”。你有什么想法? - TCFP
当然,您不能将它们存储为原样,只能作为域类的属性进行存储。 - Oliver Drotbohm
你介意进一步解释这个问题吗?我特别开了一个问题,请你查看一下,那将非常棒。https://stackoverflow.com/questions/56465862/spring-data-mongo-cannot-find-persistententity-for-enum - TCFP

7
Spring Data Mongodb 可以将枚举序列化为字符串,使用枚举的名称作为值。比方说,它采用了文章中第二种方法:http://www.vineetmanohar.com/2010/01/3-ways-to-serialize-java-enums/。在我看来,这种做法是不能被认真对待的,因为将枚举存储到数据库中的唯一正确方式是该文章中的第三种方法。让我引用一下该文章的内容:“这种方法涉及为每个枚举常量分配一个明确的用户定义值,并在枚举上定义 toValue() 和 fromValue() 方法来进行序列化和反序列化。” 因此,Spring Data Mongodb 不支持枚举。

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