当前位置: 首页 > 知识库问答 >
问题:

MongoDB上具有整数值的持久集

茅才
2023-03-14

我有一个通知类,其中包含一个Set

当我尝试对扩展了MongoRepository的NotificationINotificationRepository实例执行插入操作时

如何将枚举的值字段持久化到MongoDB?

@Document
@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
public class Notification {
    @Id
    private String id;

    @Indexed
    private Set<NotificationType> notificationType;
}

@AllArgsConstructor
@Getter
public enum NotificationType {
    FEED(0,"Feed"),
    SMS(1, "Sms"),
    EMAIL(2, "Email"),
    NOTIFICATION(3, "Notification");

    private final Integer value;
    private final String text;
}



共有1个答案

冯宏放
2023-03-14

我通常不使用MongoDB,但也许您可以使用AttributeConverter
例如:

@Converter
public class NotificationTypeConverter implements AttributeConverter<Notification, Integer> {
    @Override
    public Integer convertToDatabaseColumn(NotificationType attribute) {
        if (attribute == null) {
            return null;
        }
        return attribute.getValue();
    }

    @Override
    public NotificationType convertToEntityAttribute(Integer dbData) {
       // convert from Integer to enum
    }
}

并添加@Convert通知Type字段:

@Convert(converter = NotificationTypeConverter.class)
private Set<NotificationType> notificationType;
 类似资料:
  • 我能知道Hazelcast支持磁盘持久性吗?换句话说,我可以使用Hazelcast作为常规数据库吗?(就像apache点火一样)。

  • 我有一个持久订阅ActiveMQ的JMS代理,在WSO2 ESB V4.5.1和V4.7中运行良好 我试图在WSO2 ESB V4.8.0(里程碑3或4)中使用它,但没有成功 /repository/conf/axis2/axis2.xml中的JMS配置: -->我一直使用tcp://localhost:61616和nio://localhost:61616来实现sames效果 在ESB控制台中看

  • 除了第 3 章的 Express 的介绍以及后面第 10 章的安全之外,本章也是全书我最喜欢的章节了。 毫无疑问,几乎所有的应用都会涉及到数据存储。但是 Express 框架本身只能通过程序变量来保存数据,它并不提供数据持久化功能。而仅仅通过内存来保存数据是无法应对真实场景的。因为内存本身并不适用于大规模的数据储存而且服务停止后这些数据也会消失。另外,使用内存中的数据是无法跨机器共享的。虽然我们还

  • 我们正在尝试为我们的新项目设置一个新的JTA事务配置。该项目利用Spring JPA和Spring Data与atomikos JTA事务管理器。 正如在atomikos教程中看到的那样,我们配置了XML。 目前,我们设法启动我们的服务器没有错误。 问题是,当我们尝试在@Transactional服务中使用jpaRepository持久化实体时,我们的日志显示atomikos jta事务正在发生并

  • 问题内容: 我正在寻找一个提供完整或接近完整的LINQ支持的ORM。 LINQ to SQL- 支持LINQ内部的所有内容(.Contains,Math.Log等) -无法在不创建新数据上下文的情况下渴望加载关系属性 ADO.NET实体框架 -糟糕的LINQ支持(许多缺少的功能)。 -强大的映射功能-可以通过.Query上的.include方法来按需加载 LightSpeed- 出色的LINQ支持

  • 问题内容: 我有一个,并向其中添加了一个数组。 假设我想知道是否包含一个不使用的数组,因为我将从另一个类调用它。因此,我在其中创建了一个新数组… …但是即使将其添加到列表中,它也会返回false ,并且包含与完全相同的数组。 有没有一种方法可以使用contains,这样我就可以检查是否其中的元素之一具有数组值? 问题答案: 数组只能与Arrays.equals()比较。 您可能需要ArrayLis