azerphoenix
@azerphoenix
Java Software Engineer

Как правильно работать с меппингом ManyToMany и добавлять записи методом POST?

Здравствуйте!
Есть 2 класса entity:

@Entity @Data
@Table(name = "tasks")
public class Task {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long taskId;

    @ManyToMany(fetch = FetchType.EAGER, mappedBy = "taskList")
    private List<User> userList;
}


@Entity @Data
@Table(name = "users")
public class User {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long user_id;

    @ManyToMany
    @JoinTable(name="task_authors",
            joinColumns = @JoinColumn(name="user_id", referencedColumnName="user_id"),
            inverseJoinColumns = @JoinColumn(name="task_id", referencedColumnName="taskId")
    )
    private List<Task> taskList;
}


И контроллер:
@PostMapping("/add")
public String addTask(
        @AuthenticationPrincipal UserDetails currentUser,
        @RequestParam("WebsiteId") Website website,
        @ModelAttribute Task task,
        @RequestParam("taskAuthors") List<User> taskAuthors
) {
    User owner = (User) userService.findUserByEmail(currentUser.getUsername());
    task.setOwnerId(owner.getUser_id());

    task.setUserList(taskAuthors);

    taskService.addTask(task);
    return "redirect:/tasks";
}


Таблица должна получиться так:
+---------+---------+
| user_id | task_id |
+---------+---------+
|       1 |       5 |
|       2 |       5 |
|       3 |       5 |
+---------+---------+

Скриншот из POST запроса:
5bf4a996159da438357813.jpeg

Почему
@RequestParam("taskAuthors") List<User> taskAuthors
и соответственно: task.setUserList(taskAuthors); не дает нужного результата?
  • Вопрос задан
  • 150 просмотров
Пригласить эксперта
Ответы на вопрос 1
@stufsdf
Посмотри, он не плохо объясняет(197 урок про @ManyToMany)
https://coursehunters.net/course/spring-i-hibernat...
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы