简体   繁体   中英

Issue in inserting data into the table using greenDAO

I'm using greenDAO as my ORM tools and having some issue while saving data into the table after parsing the JSON using GSON. I got the full List before saving it to DB. Here I'm attaching the code snippet.Please have a look and give me your suggestions.

MainGenerator.java

public class MainGenerator {

    private static final String PROJECT_DIR = System.getProperty("user.dir");

    public static void main(String[] args) {
        Schema schema = new Schema(1, "com.example.cisystem3.mobiledeliveryndispatch.dao");
        schema.enableKeepSectionsByDefault();

        addTables(schema);

        try {
            new DaoGenerator().generateAll(schema, PROJECT_DIR + "\\app\\src\\main\\java");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
private static void addTables(final Schema schema) {
    Entity setting = addSetting(schema);

    ...

    Entity item = addItems(schema);

    ...
}
private static Entity addItems(final Schema schema) {
    Entity item = schema.addEntity("ItemDetails");
    item.addStringProperty("itemNum");
    item.addStringProperty("itemDesc");
    item.addStringProperty("uom");

    return item;
}

GreenDAO generated two auto-files using MainGenerator ItemDetails,ItemDetailsDAO. Now while fetching data from WcfService i have created one extra class ITEMDETAIL.java which extends the ItemDetails class as follows

ItemDetails.java

public class ItemDetails {

    private String itemNum;
    private String itemDesc;
    private String uom;

    // KEEP FIELDS - put your custom fields here
    // KEEP FIELDS END

    public ItemDetails() {
    }

    public ItemDetails(String itemNum, String itemDesc, String uom) {
        this.itemNum = itemNum;
        this.itemDesc = itemDesc;
        this.uom = uom;
    }

    public String getItemNum() {
        return itemNum;
    }

    public void setItemNum(String itemNum) {
        this.itemNum = itemNum;
    }

    public String getItemDesc() {
        return itemDesc;
    }

    public void setItemDesc(String itemDesc) {
        this.itemDesc = itemDesc;
    }

    public String getUom() {
        return uom;
    }

    public void setUom(String uom) {
        this.uom = uom;
    }

}

ITEMDETAIL.java

@Generated("org.jsonschema2pojo")
public class ITEMDETAIL extends ItemDetails {
    @SerializedName("ITEMDESC")
    @Expose
    private String iTEMDESC;
    @SerializedName("ITEMNO")
    @Expose
    private String iTEMNO;
    @SerializedName("LOCATION")
    @Expose
    private String lOCATION;
    @SerializedName("PRICELIST")
    @Expose
    private String pRICELIST;
    @SerializedName("QTYONHAND")
    @Expose
    private Integer qTYONHAND;
    @SerializedName("UNITPRICE")
    @Expose
    private Double uNITPRICE;
    @SerializedName("UOM")
    @Expose
    private String uOM;

    //Getters and Setters
}

Parsing JSON using GSON as follows and creating a List

if (response != null) {

    JSONObject jsonObject = response.getJSONObject(Constants.GetProductionResult);

    JSONArray jsonArray = jsonObject.getJSONArray(Constants.GetItemDetails);

    Gson gson = new Gson();
    for (int i = 0; i < jsonArray.length(); i++) {
        JSONObject jsonObject1 = (JSONObject) jsonArray.get(i);
        ITEMDETAIL itemdetail = gson.fromJson(jsonObject1.toString(), ITEMDETAIL.class);
        posts.add(itemdetail);
    }
}

Once List created , I'm tring to save it in the table as follows

@Override
public synchronized void insertItemDetails(ArrayList<ITEMDETAIL> itemList) {
    try {
        if (itemList != null) {
//Values came here
            for (ItemDetails item : itemList) {
                openWritableDb();
                ItemDetailsDao itemDetailsDao = daoSession.getItemDetailsDao();
                itemDetailsDao.insert(item);
                daoSession.clear();
            }
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
}

By changing the for loop the insertion is possible:

for (ITEMDETAIL item : itemList) {

    ItemDetails details = new ItemDetails();
    details.setItemDesc(item.getITEMDESC());
    details.setItemNum(item.getITEMNO());
    details.setUom(item.getUOM());

    openWritableDb();
    ItemDetailsDao itemDetailsDao = daoSession.getItemDetailsDao();
    itemDetailsDao.insert(details);
    daoSession.clear();

}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM