java – ORMLite – 如何创建对象并填充外部集合?
发布时间:2020-05-24 10:18:12 所属栏目:Java 来源:互联网
导读:我正在尝试创建一个对象,并在一个操作中填充该对象持有的外部集合的成员.我已经尝试了我能想到的每一个操作顺序,而且似乎无法让它工作. 我的课程是(跳过不相关的字段和注释): @DatabaseTablepublic class ScheduledJob{ @DatabaseField(id=true) private Str
|
我正在尝试创建一个对象,并在一个操作中填充该对象持有的外部集合的成员.我已经尝试了我能想到的每一个操作顺序,而且似乎无法让它工作. 我的课程是(跳过不相关的字段和注释): @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...*/
}
}
我这样创建我的对象: 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);
我已经尝试了最后三个语句的所有排序,但似乎没有任何作用:在每种情况下,最终在scheduledjobtask数据库表中的条目的’job_id’字段都为null. 我做错了什么想法? 解决方法您缺少的是您没有设置Task.job字段. ScheduledJobTask.job字段用于设置外部集合.当您检索作业时,它会在任务表中查找具有该作业的所有任务 – 而不是相反.您将需要执行以下操作: for (Task t : template.getTasks()) {
t.setJob(job);
job.tasks.add(new ScheduledJobTask(t));
}
然后,当你这样做: Storage.store.scheduledJobs.createIfNotExists (job); 所有作业字段都将具有已设置id字段的作业.所以,当你坚持你的任务时,他们的工作领域就会有这个职位. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
