Salut j'ai un problème avec obtenir de nombreux enregistrements de db c'est ma table principaleJe ne peux pas obtenir les valeurs de la table. Relation un à plusieurs
@DatabaseTable(tableName = "MyTrips")
public class MyTripTable {
@DatabaseField(generatedId = true)
private long id;
@DatabaseField
private long timestamp;
@DatabaseField(foreign = true, foreignAutoRefresh = true)
private ForeignCollection<PortTable> mPorts;
public MyTripTable() {}
public ForeignCollection<PortTable> getPorts() {
return mPorts;
}
public long getId() {
return id;
}
}
et voici deuxième table
@DatabaseTable(tableName = "Ports")
public class PortTable {
@DatabaseField(generatedId = true)
private long id;
@DatabaseField
private long timestamp;
@DatabaseField(foreign = true, foreignAutoRefresh = true)
private MyTripTable myTripTable;
public PortTable() {}
public void setTripAssigned(MyTripTable myTripTable){
this.myTripTable = myTripTable;
}
}
Et je besoin d'un MyTrips
ont plus Ports
Je le fais par example mais ne fonctionne pas
problème est ici:
private void strawberry(){
DatabaseHelper helper = OpenHelperManager.getHelper(getApplicationContext(), DatabaseHelper.class);
RuntimeExceptionDao<MyTripTable, Long> mTrip = helper.getTripRuntimeExcaptionDao();
RuntimeExceptionDao<PortTable, Long> mPort = helper.getPortRuntimeExcaptionDao();
long time1 = Calendar.getInstance().getTimeInMillis();
//crate data
MyTripTable myFirstTrip = new MyTripTable(153315, "Praha - Gothenburg", "Big fat woman",
time1,time1,time1,time1,1,5,6);
mTrip.create(myFirstTrip);
PortTable port1 = new PortTable("Praha",
"Praha is the capital and largest city of the Czech Republic. ",
50.078047,
14.427172);
port1.setTripAssigned(myFirstTrip);
PortTable port2 = new PortTable("Praha",
"Praha is the capital and largest city of the Czech Republic. ",
50.078047,
14.427172);
port2.setTripAssigned(myFirstTrip);
PortTable port3 = new PortTable("Praha",
"Praha is the capital and largest city of the Czech Republic. ",
50.078047,
14.427172);
port3.setTripAssigned(myFirstTrip);
PortTable port4 = new PortTable("Praha",
"Praha is the capital and largest city of the Czech Republic. ",
50.078047,
14.427172);
port4.setTripAssigned(myFirstTrip);
mPort.create(port1);
mPort.create(port2);
mPort.create(port3);
mPort.create(port4);
//Get data
Log.e("LSA", "----------------------------------TRIPS");
List<MyTripTable> alltrips = mTrip.queryForAll();
Log.e("LSA", "TRIPS" + alltrips.toString());
for (MyTripTable trip : alltrips){
Log.e("LSA", "Trip: " + trip.toString());
}
Log.e("LSA", "----------------------------------PORTS");
List<PortTable> allPorts = mPort.queryForAll();
Log.e("LSA", "PORTS" + allPorts.toString());
for (PortTable port : allPorts){
Log.e("LSA", "port: " + port.toString());
}
Log.e("LSA", "----------------------------------PORTs assigned");
MyTripTable mOneTrip = mTrip.queryForId(myFirstTrip.getId());
ForeignCollection<PortTable> mPortsForOneTrip = mOneTrip.getPorts();
Log.e("LSA", "ports inside trip: " + mPortsForOneTrip);
}
cette partie retourne toujours null
ForeignCollection<PortTable> mPortsForOneTrip = mOneTrip.getPorts();
Pouvez-vous me aider? Où est une erreur? Merci pour la réponse!
Salut d'abord vous remercie pour la réponse .. mais je vois un problème 'String.valueOf (myFirstTrip.getId())' id est long pas la chaîne! Il ne peut pas fonctionner correctement .... btw je vois juste une différence '@ForeignCollectionField (eager = false) privé ForeignCollection mPorts;' et je l'ai changé et ne fonctionne toujours pas. Je vais vérifier à nouveau ... –
J'ai édité Dao tripDao = DaoManager.createDao (connectionSource, MyTripTable.class); Dao portDao = DaoManager.createDao (connectionSource, PortTable.class); à Dao tripDao = DaoManager.createDao (connectionSource, MyTripTable.class); Dao portDao = DaoManager.createDao (connectionSource, PortTable.class); et ont remplacé tripDao.queryForId (String.valueOf (myFirstTrip.getId())); à tripDao.queryForId (myFirstTrip.getId()) –
Veuillez essayer ci-dessus et faites-moi savoir si vous rencontrez un problème avec le code. –