Я пытаюсь сохранить и извлечь документы, сопоставленные с классом, в Mongodb, используя mongodb для данных о весне с полем карты.
Вот упрощенная версия моих объектов в java: перечисление:
public enum MyEnum {
VALUE1, VALUE2
}
И сущность, которую нужно сохранить:
public class Entity {
@DBRef
private Map<MyEnum, MySubEntity> mapField;
public Entity(Map<MyEnum, MySubEntity> mapField){
this.mapField = mapField;
}
}
У меня есть простой репозиторий для сохранения сущностей и их извлечения. После сохранения документ правильно создается в MongoDB.
Проблема возникает, когда я пытаюсь получить ее. Объект Entity создается и возвращается в хранилище, но любая попытка получить доступ или использовать поле mapField
завершится неудачно с ошибкой: "java.lang.String cannot be cast to MyEnum"
При использовании отладчика java для слежки за извлеченным объектом Entity, поле mapField выглядит иметь в качестве ключей String, а не MyEnum.
Я безуспешно пытался зарегистрировать пользовательский конвертер для этого типа.
У меня вопрос: могу ли я что-либо сделать, чтобы соответствовать своему варианту использования, или моя модель просто не поддерживается Spring data mongodb, и я должен изменить его?
Обновить :
Проблема, похоже, связана с использованием @DBRef на карте. Я пытался без него, и сущность восстановлена правильно. Не уверен, почему это ...