I have a timesheet entity that has a list of tasks. When I try to add a new task to the timesheet everything gets saved except the foreign key. Any ideas how should I avoid making a method with a custom SQL query and do the job in hibernate fashion?
My timesheet entity:
@Entity
@Table(name = "timesheet")
public class Timesheet {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
private LocalDate date;
@OneToMany(
mappedBy = "timesheet",
cascade = CascadeType.ALL,
orphanRemoval = true,
fetch = FetchType.EAGER
)
@JsonManagedReference
private List<Task> tasks = new ArrayList<>();
My task:
@Entity
@Table(name = "task")
public class Task {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
private String title;
private Integer hours;
@ManyToOne
@JsonBackReference
private Timesheet timesheet;
Service impl:
@Override
public void addTask(int timesheetId, TaskVO taskVO) {
Timesheet oldTimesheet = timesheetRepository.findById(timesheetId).orElse(new Timesheet(date, tasks));
Task task = taskMapper.transformToEntity(taskVO);
taskRepository.save(task);
oldTimesheet.getTasks().add(task);
timesheetRepository.save(oldTimesheet);
}