В весенней загрузке Java-проекта, как сопоставить свойство различных типов данных из базы данных Монго в класс Java? - PullRequest
0 голосов
/ 06 сентября 2018

Привет, у меня есть секция dugoment DB mongo, которая имеет свойство столбцов, как показано (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.

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

1 Ответ

0 голосов
/ 06 сентября 2018

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

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

...