2016-10-07 7 views
0

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

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.

+0

Существует только один объект 'cv', и каждый раз через цикл вы переписываете свой один атрибут значения. Как именно вы ожидаете сохранить список? –

ответ

0

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

public Coverage1.Coverage[] values; 

Таким образом, изменить методы получения и установки, а также.

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

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

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

Или,

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

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

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

+0

Это все еще не работает, Получение ошибки: невозможно преобразовать из Coverage1.Coverage в List . Здесь Coverage1 - это имя класса, а Coverage - имя Enum. Пожалуйста, предложите –

+0

Вам необходимо полностью заменить «public Coverage value;» на список. Это была моя точка –