Как установить весь список перечислений в переменной, а затем сохранить его в MongoDB

Мне нужно сохранить данные Enum в MongoDB, для этого я могу получить данные Enum, но не знаю, как их установить. Я использую Enum в POJO, и мне нужно сохранить этот POJO, содержащий Enum, в MongoDB, для этого использовался Gson.

import javax.annotation.Generated;

@Generated("org.jsonschema2pojo")
public class Coverage1 {
    public  enum Coverage {
Hearing_Aid_Professional_Liability("HEAR"), Incidental_Motorized_Land_Conveyances_Liability_Only("LANDC"), PremisesOperations_334("PREM"), Rental_Reimbursement("RREIM"), Liquor_Law_Liability_332("LLL"), Wind("WIND"), Business_Personal_Property("BPP"), OpticianOptometrists_Professional_Liability("OOPRL"), Builders_Risk("BLDRK"), Incidental_Farming_Personal_Liability("IFPL");

    private String val;

Coverage(String val){
        this.val = val;
    }

    public String getVal ()
    {
        return this.val;
    }

    public void setVal (String val)
    {
        this.val = val;
    }
}

    public Coverage value;
    public Coverage getValue() {
        return value;
    }

    public void setValue(Coverage value) {
        this.value = value;
    }

    private String id;

    private CoverageCd coverageCd;
    private CoverageDesc coverageDesc;
    private CoverageTypeCd coverageTypeCd;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

   public CoverageCd getCoverageCd() {
        return coverageCd;
    }

    public void setCoverageCd(CoverageCd coverageCd) {
        this.coverageCd = coverageCd;
    }
   public CoverageDesc getCoverageDesc() {
        return coverageDesc;
    }

    public void setCoverageDesc(CoverageDesc coverageDesc) {
        this.coverageDesc = coverageDesc;
    }*
    public CoverageTypeCd getCoverageTypeCd() {
        return coverageTypeCd;
    }

     public void setCoverageTypeCd(CoverageTypeCd coverageTypeCd) {
        this.coverageTypeCd = coverageTypeCd;
    }

}

В другом классе я вызываю его из того места, где мне нужно сохранить его в Mongo DB.

Coverage1 cv= new Coverage1();
            List<Coverage1.Coverage> ae= new ArrayList<Coverage1.Coverage>();
            for(Coverage1.Coverage enumval:Coverage1.Coverage.values()){
                //ae=enumval;
                System.out.println(enumval);
                cv.setValue(enumval);//I need to set the entire Enum data here, so that it could be saved in Mongo. But not getting how to save the entire data
            }
            cv.setId("1");
            Gson gson = new Gson();
            String json = gson.toJson(cv);
            System.out.println(json);
            // Parse to bson document and insert
           Document doc = Document.parse(json);
           db.getCollection("NameColl").insertOne(doc);

Пожалуйста, помогите мне, как сохранить все данные Enum в документе Mongo.


person Developer52    schedule 07.10.2016    source источник
comment
Есть только один объект cv, и вы каждый раз в цикле перезаписываете его атрибут с одним значением. Как именно вы рассчитываете сохранить там список?   -  person OneCricketeer    schedule 07.10.2016


Ответы (1)


Вы можете восстановить правильную схему со списком значений вашего покрытия в JSON, но это должен быть список

public Coverage1.Coverage[] values;

Поэтому измените также геттеры и сеттеры.

Тогда вы можете cv.setValues(Coverage1.Coverage.values());

Или, может быть, вы пытались это сделать

List<Coverage1.Coverage> ae= new ArrayList<Coverage1.Coverage>(Arrays.asList( Coverage1.Coverage.values());

Or,

for(Coverage1.Coverage enumval: Coverage1.Coverage.values() ){
    ae.add(enumval);
}

По сути, cv.setValue(enumval); не может выполняться в цикле, потому что вы замените его value

Я бы также предложил более подходящие имена для перечисления. И тот, что в конце Coverage1, может быть удален

person OneCricketeer    schedule 07.10.2016
comment
Это все еще не работает. Ошибка: невозможно преобразовать из Coverage1.Coverage в List ‹Coverage1.Coverage›. Здесь Coverage1 - это имя класса, а Coverage - это имя Enum. Пожалуйста, предложите - person Developer52; 09.10.2016
comment
Вам нужно полностью заменить public Coverage value; списком. Это была моя точка зрения - person OneCricketeer; 09.10.2016