我想知道如何更新 ORMLITE 中的外来对象?
假设我有这些类(class)
这是父级
public static class Parent {
@DatabaseField(generatedId=true,allowGeneratedIdInsert=true)
int id;
@DatabaseField
String name;
...
这是 child
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 名字=“大”
对于 child 编号=338 父级 = {id=5,name="big"}
在这里,当我想更新我的 parent ID 时,它运行良好:
firstId=5, lastId=6
UpdateBuilder<Parent, Integer> builder = ParentDao.updateBuilder();
builder.where().eq("id", firstId);
builder.updateColumnValue("id", lastId);
builder.update();
之后,我使用 select 命令来确定它是否已更新。我确定它正在为 Parent 更新。但是当我更新我的 Parent id 时,我在我的 Child 对象中丢失了父对象。它看起来像这样:
给家长 id=6 名字=“大”
对于 child 编号=338 父级 = {null}
有人知道这个的解决方案吗?
最佳答案
OrmLite 不会像其他 ORM 一样自动自动保存嵌套对象。
因此您还需要更新 Child。
步骤是
- 首先你得到父对象。
- 从那里读 child 。
- 更新 parent
- 现在将更新的父项设置为子项
- 也更新 child 。
关于android - 更新外部对象 ORMLite - ANDROID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19174874/