Проблема при вставке данных в таблицу с помощью greenDAO

Я использую greenDAO в качестве инструментов ORM и имею некоторые проблемы при сохранении данных в таблицу после разбора JSON с помощью GSON.
Я получил полный список, прежде чем сохранить его в БД.
Здесь я прикрепляю фрагмент кода.Пожалуйста, посмотрите и дайте мне ваши предложения.

MainGenerator.Ява

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 + "appsrcmainjava");
        } 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 создал два автоматических файла с помощью Maingenerator ItemDetails, ItemDetailsDAO.
Теперь при извлечении данных из WcfService я создал один дополнительный класс ITEMDETAIL.java, которая расширяет класс ItemDetails следующим образом

ItemDetails.Ява

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.Ява

@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
}

Разбор JSON с помощью GSON следующим образом и создание списка

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

После создания списка я пытаюсь сохранить его в таблице следующим образом

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

1 ответ

  1. Путем изменять для петли вставка возможна:

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