在Spring中为代码数组编写代码时,我有以下代码:
TaskList parent_list = repo.findOne(listId);
Task t = new Task();
// set fields for t
parent_list.getTasks().add(t);
repo.save(parent_list);
此处,repo
是TaskList
的存储库,是Spring Data JPA中JpaRepository
的扩展。
parent_list
包含一些与自身相关的数据(名称,所有者)和List<Task>
。
我的问题是,在调用save()
之前,add()函数是如何工作的?为什么我不需要返回一个值(即需要做parentList.setTasks(parent_list.getTasks().add(t));
)?
由于repo.save()
,我得到一个空对象。
我只有TaskList
对象的存储库,而不是Task
。我的印象是不需要额外的回购;您只需要与第一个表中的表格建立关系,并自动保存条目。
答案 0 :(得分:1)
我认为TaskList
和Task
之间存在一对多的关系。 TaskList
使用getTasks()
方法返回其任务,该方法返回List<Task>
。通过方法add()
,您可以在列表中添加新元素。这就是魔术 - List
由hibernate提供,并且在列表中添加或删除新项目时具有特殊处理。一旦您继续执行这些操作,它将运行SQL查询/更新/删除以将您的更改传播到数据库中。
答案 1 :(得分:0)
似乎add()
是一个函数的事实会产生重大影响。
add()
函数会在其中的某个位置附加作业,将传递给它的Task
附加到List<Task>
。