@ManyToOne работает не так, как ожидалось

240
04 декабря 2017, 17:13

Привет. Сама ассоциация работает правильно, но не сохраняется author_id у поста.

Много постов может быть оставлено одним автором:

@Entity
@Table(name = "post")
public class Post {
    // ...
    @ManyToOne
    @JoinColumn(name="author_id")
    private User author; }

Один автор может иметь много постов:

public class User implements UserDetails {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "user_id")
    private long id;
    // ...
    @OneToMany(mappedBy="author", cascade = CascadeType.ALL)
    private List<Post> posts; }

Тут я пытаюсь сохранять посты:

@PostMapping("/posts")
    public String createPost(@Valid @RequestParam String body) {
        Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
        String name = authentication.getName();
        Post post = new Post();
        User currentUser = userService.findByName(name);
        post.setAuthor(currentUser);
        post.setBody(body);
        postService.save(post);
        return "redirect:/posts/";
    }

Посты сохраняются и если я искусственно (через базу добавлю правильный author_id), то ассоциация будет работать, но сам этот author_id не сохраняется. Почему так? Смотрю гайды типа https://en.wikibooks.org/wiki/Java_Persistence/ManyToOne и https://hellokoding.com/jpa-one-to-many-relationship-mapping-example-with-spring-boot-maven-and-mysql/ , но не понимаю что не так.

Answer 1

Попробуйте добавить отношение и с другой стороны перед вызовом метода save()

currentUser.getPosts().add(post);
READ ALSO
двумерный массив в рекурсивном классе java

двумерный массив в рекурсивном классе java

есть заполненный числовой двумерный массив А[N][W] (по условию верхняя строка нули, а справа внизу максимум) и вектор w[N], и требуется следуя...

235
Стилизация андроид Приложения

Стилизация андроид Приложения

В приложения программно (Java коде) вывожу несколько LinearLayoutНе как не могу поставить программно этому LinearLayout фон имеющего drawable

294
Не завершается выполнение Java программы

Не завершается выполнение Java программы

Есть такой простой код с потоками:

214
Не могу запустить java.exe из командной строки (cmd)

Не могу запустить java.exe из командной строки (cmd)

Не могу запустить javaexe из командной строки (cmd)

280