简体   繁体   English

使用greenDAO将数据插入表中的问题

[英]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. 我将greenDAO用作ORM工具,并在使用GSON解析JSON后将数据保存到表中时遇到了一些问题。 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 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. GreenDAO使用MainGenerator ItemDetails,ItemDetailsDAO生成了两个自动文件。 Now while fetching data from WcfService i have created one extra class ITEMDETAIL.java which extends the ItemDetails class as follows 现在,当从WcfService获取数据时,我创建了一个额外的类ITEMDETAIL.java,它扩展了ItemDetails类,如下所示

ItemDetails.java 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 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 如下使用GSON解析JSON并创建一个列表

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循环,可以进行插入:

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();

}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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