2016-10-07 3 views
0

EnumデータをMongoDBに保存する必要があります。このためにEnumデータを取得できますが、設定方法は取得できません。私はPOJOでEnumを使用しており、Enumを含むPOJOを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); 

誰かがMongoドキュメントのEnumデータ全体を保存する方法を教えてください。

+0

'cv'オブジェクトは1つしかなく、ループのたびに1つの値属性を上書きしています。そこにリストをどのくらい保存すると思いますか? –

答えて

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からをリストに変換できません。ここで、Coverage1はクラス名、CoverageはEnum名です。提案してください –

+0

あなたは 'public Coverage value;'をリストに完全に置き換える必要があります。それが私の主張でした –

関連する問題