Tôi đang cố gắng tạo một đối tượng và cư trú các thành viên của một bộ sưu tập nước ngoài được tổ chức bởi đối tượng đó trong một thao tác đơn lẻ. Tôi đã thử mọi thứ tự của các hoạt động tôi có thể nghĩ đến, và dường như không thể làm cho nó hoạt động được.ORMLite - làm thế nào để tạo ra một đối tượng và cư trú bộ sưu tập nước ngoài?
lớp của tôi là (bỏ qua các lĩnh vực không liên quan và chú thích):
@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...*/
}
}
tôi tạo các đối tượng của tôi như sau:
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);
Tôi đã thử tất cả orderings của ba tuyên bố cuối cùng, nhưng không có vẻ công việc: trong mọi trường hợp, các mục nhập trong bảng cơ sở dữ liệu schedulejobtask có null cho trường 'job_id' của họ.
Bất kỳ ý tưởng nào tôi đã làm sai?
Ah, cảm ơn, tôi đã giả định rằng các trường đó sẽ được đặt tự động khi đối tượng được duy trì. :) – Jules
Nếu bạn có thể tìm ra một cách dễ dàng cho ORMLite để có thể làm điều đó, tôi là tất cả tai @ Jules. – Gray