这个add()函数是如何工作的,为什么我返回null?

时间:2016-02-05 07:12:25

标签: java spring

在Spring中为代码数组编写代码时,我有以下代码:

TaskList parent_list = repo.findOne(listId);

Task t = new Task();
// set fields for t

parent_list.getTasks().add(t);
repo.save(parent_list);

此处,repoTaskList的存储库,是Spring Data JPA中JpaRepository的扩展。 parent_list包含一些与自身相关的数据(名称,所有者)和List<Task>

我的问题是,在调用save()之前,add()函数是如何工作的?为什么我不需要返回一个值(即需要做parentList.setTasks(parent_list.getTasks().add(t));)?

由于repo.save(),我得到一个空对象。

我只有TaskList对象的存储库,而不是Task。我的印象是不需要额外的回购;您只需要与第一个表中的表格建立关系,并自动保存条目。

2 个答案:

答案 0 :(得分:1)

我认为TaskListTask之间存在一对多的关系。 TaskList使用getTasks()方法返回其任务,该方法返回List<Task>。通过方法add(),您可以在列表中添加新元素。这就是魔术 - List由hibernate提供,并且在列表中添加或删除新项目时具有特殊处理。一旦您继续执行这些操作,它将运行SQL查询/更新/删除以将您的更改传播到数据库中。

答案 1 :(得分:0)

似乎add()是一个函数的事实会产生重大影响。

add()函数会在其中的某个位置附加作业,将传递给它的Task附加到List<Task>