Sto provando a creare un oggetto e popolare i membri di una raccolta straniera detenuti da quell'oggetto in una singola operazione. Ho provato ogni ordine di operazioni a cui riesco a pensare, e proprio non riesco a farlo funzionare.ORMLite - come creare un oggetto e popolare la collezione straniera?
mie classi sono (saltando i campi irrilevanti e annotazioni):
@DatabaseTable
public class ScheduledJob
{
@DatabaseField(id=true)
private String id = UUID.randomUUID().toString();
@ForeignCollectionField(eager=true)
private Collection<ScheduledJobTask> tasks;
/* other stuff here ... */
}
@DatabaseTable
public class ScheduledJobTask
{
@DatabaseField(id=true)
private String id = UUID.randomUUID().toString();
@DatabaseField(foreign=true)
private ScheduledJob job;
/* more other stuff ... */
public ScheduledJobTask(Task t) {
/* initialise scheduled task from template task by copying relevant fields...*/
}
}
creo miei oggetti così:
ScheduledJob job = new ScheduledJob();
// fill in other fields of job here
job.tasks = new ArrayList<ScheduledJobTask>();
for (Task t : template.getTasks())
job.tasks.add(new ScheduledJobTask(t));
sched.getSchedule().add (job); // 'sched' is an object loaded from another table, this
// adds 'job' to a foreign collection in that table
Storage.store.scheduledJobs.createIfNotExists (job);
for (ScheduledJobTask t : job.getTasks())
Storage.store.scheduledJobTasks.createIfNotExists (t);
Storage.store.daySchedules.update (sched);
Ho provato tutti ordinamenti degli ultimi tre affermazioni, ma nulla sembra lavoro: in ogni caso, le voci che finiscono nella tabella del database schedulejobtask hanno null per il loro campo 'job_id'.
Qualche idea su cosa ho fatto di sbagliato?
Ah, grazie, supponevo che quei campi sarebbero stati impostati automaticamente quando l'oggetto è stato mantenuto. :) – Jules
Se riesci a trovare un modo semplice per ORMLite di essere in grado di farlo, sono tutto orecchie @Jules. – Gray