其他分享
首页 > 其他分享> > 更新异物ORMLite-ANDROID

更新异物ORMLite-ANDROID

作者:互联网

我想知道如何在ORMLITE中更新异物?

假设我有这些课程

这是父母

public static class Parent {

    @DatabaseField(generatedId=true,allowGeneratedIdInsert=true)
    int id;
    @DatabaseField
    String name;
    ...

这是孩子

public static class Child{
    @DatabaseField(generatedId=true,allowGeneratedIdInsert=true)
    int id;
    @DatabaseField(canBeNull = false, foreign = true,foreignAutoCreate = true,foreignAutoRefresh = true, columnDefinition = "integer references parent(id) on update cascade")
    Parent parent;
    ...

假设我们具有以下值:

对于父母
id = 5
名称=“大”

对于儿童
id = 338
父母= {id = 5,name =“ big”}

在这里,当我想更新我的父母身份证时,它运行良好:

firstId = 5,lastId = 6

UpdateBuilder<Parent, Integer> builder = ParentDao.updateBuilder();
builder.where().eq("id", firstId);
builder.updateColumnValue("id", lastId);
builder.update();

在那之后,我使用select命令来确保它没有被更新.我确定它正在为父级更新.但是,当我更新父ID时,我的子对象中丢失了父对象.它看起来像这样:

对于父母
id = 6
名称=“大”

对于儿童
id = 338
父级= {空}

有人知道任何解决方案吗?

解决方法:

OrmLite不会像其他ORM一样自动地自动保存嵌套对象.

因此,您还需要更新Child.

步骤是

>首先,您获得父对象.
>从中读孩子.
>更新父母
>现在将更新的父级设置为子级
>也更新孩子.

标签:sql-update,foreign-key-relationship,ormlite,cascade,android
来源: https://codeday.me/bug/20191030/1967199.html