gpt4 book ai didi

android - 我无法保存关联模型 (ActiveAndroid)

转载 作者:行者123 更新时间:2023-11-29 01:35:47 24 4
gpt4 key购买 nike

我使用图书馆ActiveAndroid with RetroFit .

如果我有一个简单的模型,一切都会很好。但是如果模型包含不同的模型,我不知道所有这些是如何存储在数据库中的

我的模型:

@Table(name="User7s")
public class User extends Model {
@Expose
@Column(name="name")
@SerializedName("name")
public String name;
@Expose
@Column(name="sname")
@SerializedName("sname")
public String sname;
@Expose
@Column(name="age")
@SerializedName("age")
public int age;
}

我的第二个模型:

@Table(name="Params")
public class Params extends Model {
@Expose
@Column(name="heigth")
@SerializedName("heigth")
public String heigth;
@Expose
@Column(name="weight")
@SerializedName("weight")
public String weight;
}

我的 JSON:

{
"name": "Pavel",
"sname": "Petrashov",
"age": 24,
"params": {
"heigth": 188,
"weight": 72
}
}

然后我保存用户。但我希望我的用户包含参数。我该如何添加它们?

public void saveUser(View view) {
RestApiStorege.me().getApiUser().getUser(new Callback<User>() {
@Override
public void success(User user, Response response) {
user.save();
}

@Override
public void failure(RetrofitError error) {
Log.d("MyLog",error.getBody().toString());
}
});
}

编辑:我希望我的模型看起来像并保存

@Table(name="User7s")
public class User extends Model {
@Expose
@Column(name="name")
@SerializedName("name")
public String name;
@Expose
@Column(name="sname")
@SerializedName("sname")
public String sname;
@Expose
@Column(name="age")
@SerializedName("age")
public int age;
@Expose
@Column(name="params")
@SerializedName("params")
public Params params;

public User() {
super();
}
}

最佳答案

听起来你想做的是这样的:

user.save();

这应该可以在不抛出任何危险信号的情况下工作,但是当您尝试检索用户对象并访问参数时,您可能会得到一个空对象异常,因为参数不会被设置。相反,你必须做这样的事情:

params.save();
user.save();

这会将参数保存到数据库中,然后当您保存用户时,您将能够检索参数。问题是您没有保存参数。如果你想让生活更轻松,你可以向你的用户对象添加一个方法,如下所示

public void CascadeSave() {
this.params.save();
this.save();
}

这将为您处理所有事情,您只需要记住不要再对用户对象使用 .save()

关于android - 我无法保存关联模型 (ActiveAndroid),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28165012/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com