0
我正在從Json
檢索數據,使用Gson
進行反序列化並使用ORMLite
保存到數據庫中。查詢異物後,結果爲0。Android ormlite foregin對象沒有保存
我通過獲取API(網絡)的數據:與Gson
構建對象
[{
"id": 4,
"name": "California",
"desc": "",
"coords": {
"lat": 37.755363,
"lon": -122.478676
}
}, {
"id": 12,
"name": "Texas",
"desc": "asd",
"coords": {
"lat": 29.739861,
"lon": -95.395660
}
}]
:
List<Location> locations = new Gson().fromJson(szData, Location.class);
我已籤通過Android Studio調試,對象已成功創建。
保存位置到數據庫:
Dao<Location, Long> dao = dbHelper.getDaoLocation();
long entries = dao.create(locations);
對象被成功地保存到數據庫中。
通過ORMLite
充分利用數據庫中的位置:
List<Location> locations = daoLocation.queryBuilder().query();
正如預期的那樣,我越來越從數據庫中的結果。但是,位置的座標是空的。這是因爲我還沒有Coordinate
對象上調用dao.refresh()
。
的車型:
@DatabaseTable(tableName = "Locations")
public class Location {
@DatabaseField(columnName = "id", generatedId = true)
private transient long id;
@DatabaseField(columnName = "server_id")
@SerializedName("id")
private long serverId;
private String name;
private String desc;
@DatabaseField(foreign = true)
private Coordinate coords;
// Getters and setters
}
@DatabaseTable(tableName = "Coordinates")
public class Coordinate {
@DatabaseField(generatedId = true)
private long id;
@SerializedName("lat")
private double latitude;
@SerializedName("lon")
private double longitude;
// Getters and setters
}
正如你所看到的,我沒有從協調到Location對象的引用。
如果我查詢座標表(用於調試目的),我得到0的結果。
Dao<Coordinate, Long> dao = dbHelper.getDaoCoordinate();
QueryBuilder<Coordinate, Long> qb = dao.queryBuilder();
List<Coordinate> coordinates = qb.query();
上述查詢給我0的結果。我做錯了什麼?