Je récupère des données d'un Json
, désérialisant avec Gson
et en enregistrant dans une base de données avec ORMLite
. Après avoir interrogé l'objet étranger, le résultat est 0.Android ne peut pas être sauvé objet
Je Récupération des données via l'API (réseau):
[{
"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
}
}]
Construire les objets avec Gson
:
List<Location> locations = new Gson().fromJson(szData, Location.class);
J'ai vérifié Avec le débogage d'Android Studio, les objets ont été créés avec succès.
Enregistrement des emplacements dans la base de données:
Dao<Location, Long> dao = dbHelper.getDaoLocation();
long entries = dao.create(locations);
Les objets ont été enregistrés dans la base de données avec succès.
Obtenir les emplacements de la base de données via ORMLite
:
List<Location> locations = daoLocation.queryBuilder().query();
Comme prévu, je reçois les résultats de la base de données. Toutefois, la coordonnée de l'emplacement est vide. C'est parce que je n'ai pas appelé dao.refresh()
sur l'objet Coordinate
.
Les modèles:
@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
}
Comme vous pouvez le voir, je n'ai pas une référence à l'objet Lieu de la Coordination.
Si j'interroge la table de coordonnées (à des fins de débogage), j'obtiens 0 résultat.
Dao<Coordinate, Long> dao = dbHelper.getDaoCoordinate();
QueryBuilder<Coordinate, Long> qb = dao.queryBuilder();
List<Coordinate> coordinates = qb.query();
La requête ci-dessus donne 0 résultats. Qu'est ce que je fais mal?