Spring Data MongoDB 是不是支持枚举?

Posted

技术标签:

【中文标题】Spring Data MongoDB 是不是支持枚举?【英文标题】:Does Spring Data MongoDB support enums?Spring Data MongoDB 是否支持枚举? 【发布时间】:2015-05-12 09:45:28 【问题描述】:

对于Java枚举类型,我了解到MongoDB有两种解决方案:serialization和using Jackson’s ObjectMapper。 MongoRepository 是否可以使用这些方法中的任何一种处理枚举数据类型,或者我必须编写自定义存储库?

【问题讨论】:

【参考方案1】:

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

【讨论】:

谢谢奥利弗。在我发布我的问题后,我昨晚写了一个单元测试,所有测试都通过了。在发布任何内容之前,我应该做更多的工作。现在,我需要弄清楚如何使用 javascript 代码制作 Java 枚举数据。那是另一个故事。 这是否假定枚举值是字符串并且 mongodb 字段是字符串并且它进行区分大小写的匹配? 我试过这个,但它说它“没有为枚举找到 PersistentEntity”。想法? 你当然不能按原样存储它们,而只能作为域类的属性。 您介意进一步解释这一点吗?我特别提出了一个问题,如果你能检查出来,那就太棒了。 ***.com/questions/56465862/…【参考方案2】:

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

【讨论】:

以上是关于Spring Data MongoDB 是不是支持枚举?的主要内容,如果未能解决你的问题,请参考以下文章

Spring Data (数据)MongoDB

Spring MongoDB BasicQuery不支持投影

spring boot 中添加mongodb支持

使用Spring Data防止MongoDB中的重复(Spring Roo)

使用 Spring Data Mongodb,是不是可以在不拉取和迭代整个集合的情况下获得字段的最大值?

求教Spring Data Mongodb 的自增ID实现