更新异物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