Как связать вновь созданные объекты JPA / Spring - PullRequest
0 голосов
/ 09 апреля 2020

У меня есть две разные сущности, пользователь приложения и пост. Они отображаются в отношениях onetomany / manytoone.
Когда я создаю новое сообщение, я бы хотел, чтобы пользователь, создавший сообщение, был связан с ним.
В настоящее время я пытаюсь выполнить следующее:

@RequestMapping(method = RequestMethod.POST, value = "/api/users/posts")
    @ResponseBody
    Post newPost (@RequestBody Post newPost) {
        ApplicationUser applicationUser = applicationUserRepository.findByUsername(newPost.getUsername());
        newPost.setUser(applicationUser);
        applicationUser.addPost(newPost);
        applicationUserRepository.save(applicationUser);
        return this.postRepository.save(newPost);
    }

Пользователь приложения выглядит следующим образом:

@Entity
public class ApplicationUser {

  @Id
  @GeneratedValue(strategy = GenerationType.IDENTITY)
  private Long id;

  private String username;

  ...

  @OneToMany(
      cascade = CascadeType.ALL,
      orphanRemoval = true
  )
  @JsonManagedReference
  private Set<Post> posts;

  ...

и сообщение:

@Entity
public class Post {

  private @Id
  @GeneratedValue
  Long id;

  @ManyToOne(fetch = FetchType.LAZY)
  @JoinColumn
  @JsonBackReference
  private ApplicationUser user;

  private String username;

  ...

В настоящее время сообщение создано, но нет связи между приложением Пользователь и сообщение.
Заранее спасибо.

1 Ответ

0 голосов
/ 11 апреля 2020

Не могли бы вы попробовать следующий подход:

В вашей сущности ApplicationUser измените код, как показано ниже

  @OneToMany(fetch = FetchType.LAZY, mappedBy = "user")
  private Set<Post> posts;

И разместите сущность, как показано ниже

  @ManyToOne(fetch = FetchType.LAZY)
  @JoinColumn(name = "user_id")
  private ApplicationUser user;

Я предполагаю, что у вашей почтовой сущности есть внешний ключ с именем 'user_id', который ссылается на 'id' пользователя приложения. Дайте мне знать, если это работает для вас

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...