В весеннем загрузочном проекте java, как сопоставить свойство разных типов данных из базы данных mongo в класс java?

Привет, у меня есть раздел ducument mongo DB, в котором есть свойство columns, как показано (1-й формат)

   "columns" : [
                    [
                        {
                            "itemId" : ObjectId("5b863b50083ae5eb1e678d75"), 
                            "type" : "field"
                        }
                    ], 
                    [
                        {
                            "itemId" : ObjectId("5b8d4404af0963f54e262f46"), 
                            "type" : "field"
                        }
                    ], 
                    [

                    ], 
                    [

                    ]
                ]


which is of the type Array of Array of Objects 

However at some places it is also stored in this format as well . (2nd format)


          "columns" : [
            {
                "0" : {
                    "itemId" : "5b863b50083ae5eb1e678d75", 
                    "type" : "field"
                }
            }, 
            {
                "0" : {
                    "itemId" : "5b8d4404af0963f54e262f46", 
                    "type" : "field"
                }
            }, 
            {

            }, 
            {

            }
        ]

Как массив объекта объекта

теперь у меня есть класс dao someObject для хранения самого внутреннего объекта

public class SomeObject{

private ObjectId itemId;
    private String type;
    public ObjectId getItemId() {
        return itemId;
    }
    public void setItemId(ObjectId itemId) {
        this.itemId = itemId;
    }
    public String getType() {
        return type;
    }
    public void setType(String type) {
        this.type = type;
    }

}

вот раздел Дао класс

public class Section{

private List<List<SomeObject>> columns;

    public List<List<someObject>> getColumns() {
        return columns;
    }

    public void setColumns(List<List<SomeObject>> columns) {
        this.columns = columns;
    }
}

как класс раздела когда-либо это отлично работает для первого формата, поскольку я взял тип как список

но ломается для второго формата, так как он отличается

я тоже пробовал использовать этот класс

Public class Section {

private List<Object> columns;

}

это соответствует второму формату, но не соответствует первому формату я получил следующую ошибку

 "exceptionDetails": "Cannot convert [Document{{itemId=5877f2345449aef957e1d8ec, type=field}}] of type class java.util.ArrayList into an instance of class java.lang.Object! Implement a custom Converter<class java.util.ArrayList, class java.lang.Object> and register it with the CustomConversions.

пожалуйста, может ли кто-нибудь предложить, как мне создать класс dao, чтобы он мог отображать оба формата ?? мне нужно реализовать настраиваемый картограф? если да, то как?

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
0
118
1

Ответы 1

Мне кажется, вы немного не понимаете, что такое класс DAO. У вас есть JavaBeans.

А что касается вашего вопроса, как вы заметили и как указано в деталях исключения, ваш документ - это ArrayList, почему бы просто не прочитать его как ArrayList, а затем установить его в поле Section? Но если этот вариант вам не подходит, вы можете реализовать Пользовательский конвертер, об этом также сообщается вам в деталях исключения.

я не уверен, будет ли это массивом ArrayList (как в формате 1) или массивом объектов (как показано в формате 2)

user_531 06.09.2018 15:42

@ user_531 тогда может быть стоит привести ваши данные в порядок и сохранить их в одном формате?

Anar Sultanov 07.09.2018 09:41

Другие вопросы по теме