Bir nesne oluşturmaya çalışıyorum ve bu nesne tarafından tutulan yabancı bir koleksiyonun üyelerini tek bir işlemle dolduruyorum. Düşünebildiğim tüm operasyonları denedim ve işe yaramayacak gibi görünmüyor.ORMLite - Bir nesne nasıl oluşturulur ve yabancı koleksiyon nasıl doldurulur?
Derslerim (ilgisiz alanlar ve açıklamaları atlama) vardır:
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);
son üç tabloların tüm orderings denedi, ama hiçbir şey görünüyor:
@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...*/
}
}
Ben böylece benim nesneleri oluşturmak iş: her durumda, planlananjobtask veritabanı tablosunda yer alan girdiler, 'job_id' alanı için boştur.
Neyi yanlış yaptığım hakkında bir fikrin var mı?
Ah, teşekkürler, nesne devam ettiğinde bu alanların otomatik olarak ayarlanacağını varsayıyordum. :) – Jules
Eğer ORMLite'nin bunu yapabilmesi için kolay bir yol bulabilirsen, ben hepimiz @Jules. – Gray