来自Json的OrmLite外键存在

时间:2014-03-07 11:31:25

标签: android ormlite

我以前从未使用过OrmLite,但我需要编辑使用它的现有项目。

我有两个班:人和办公室。

我正在使用gson进行解析,并向该人提供了办公室ID,例如office_id:“4456”。

我希望可以将这两个人从我的Person课程中联系起来,这样我就可以很容易地找到一个人的办公室。

例如:

@SerializedName("id")
@DatabaseField(id = true, columnName = ID)
private int mId;

@SerializedName("full_name")
@DatabaseField(columnName = FULL_NAME)
private String mFullName = null;

@DatabaseField(columnName = POSITION)
private String mPosition = null;

@SerializedName("email")
@DatabaseField(columnName = EMAIL)
private String mEmail = null;

private Office office = null;

@SerializedName("office_id")
private String officeId = null;

所以我有来自Json的officeId,它存储在Person表中。我想在加载时自动将Office加载到Person对象中。

1 个答案:

答案 0 :(得分:0)

要在查询时自动提取引用的对象,您可以在foreignAutoRefresh = true中使用@DatabaseField。您引用Object而不是id本身。在表中,将存储引用行的id。

澄清您的项目: Office必须如下所示:

@SerializedName("id")
@DatabaseField(id = true, columnName = ID)
private int mId;

...

你的Person(数据库方式)如下:

@DatabaseField(id = true, columnName = ID)
private int mId;

@DatabaseField(columnName = FULL_NAME)
private String mFullName = null;

@DatabaseField(columnName = POSITION)
private String mPosition = null;

@DatabaseField(columnName = EMAIL)
private String mEmail = null;

@DatabaseField(foreign = true, foreignAutoRefresh = true)
private Office office = null;

Office表格中的Person列将保留id的{​​{1}}。

Office告诉ORMLite在查询foreignAutoRefresh时获取完整的Office http://ormlite.com/javadoc/ormlite-core/com/j256/ormlite/field/DatabaseField.html#foreignAutoRefresh()

希望这有帮助