我有两个实体,Task和TaskItem,它们有@ManyToOne关系,TaskItem是欠方:
在任务中:
@OneToMany(mappedBy = "task",
cascade = CascadeType.ALL)
private @Getter @Setter Set<TaskItem> taskItems = new HashSet<TaskItem>();
在TaskItem中:
@ManyToOne(cascade = CascadeType.ALL)
@JoinTable(name = "item_task",
joinColumns = {@JoinColumn(name = "taskItem_id", nullable = false, updatable = false)},
inverseJoinColumns = {@JoinColumn(name = "task_id", nullable = false, updatable = false)})
private @Getter @Setter Task task;
我的测试代码:
Task t = new Task();
TaskItem item = new TaskItem();
item.setTask(t);
t.addItem(item);
taskRepo.save(t);
测试代码运行良好,但我想知道如何获取已保存的项目,尤其是项目的生成
id
?看来我只能这样得到任务的身份。
我想编写一个函数来保存TaskItem并返回保存的实体,我已经考虑过用taskItemRepo
直接保存它,但是当没有新创建通信任务时,例如:
Task t = taskRepo.findOne(tid);
TaskItem item = new TaskItem();
item.setTask(t);
taskItemRepo.save(item)
我会收到detached entity
错误:(