如何使用Spring Boot发布oneToMany关系数据库条目

时间:2019-06-21 13:54:28

标签: java hibernate spring-boot

我应该如何构造JSON POST,后端上的控制器和POJO类?

这是用于Twitter克隆的,因此用户可以具有多个tweet等

开机自检

{ "tweet": "Sew one button, doesn't make u a tailor", "user": "Alex" }

推特控制器

    public Tweet createTweet(@RequestBody Tweet tweet) {
        return tweetRepository.save(tweet);
    }

推文类

@Table(name = "tweets")
public class Tweet {

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

    @ManyToOne(cascade = CascadeType.PERSIST)
    private User user;

    ...

用户类别

@Table(name = "custom_user")
public class User {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;
    private String name;

    @OneToMany(cascade = CascadeType.ALL)
    @JoinColumn(name = "tweet_id")
    private List<Tweet> tweet = new ArrayList<>();

这是我得到的答复

{
    "id": 1,
    "user": {
        "id": 2,
        "name": "Alex",
        "tweet": []
    },
    "tweet": "Sew one button, doesn't make u a tailor"
}

编辑:

如果我在用户端点上执行GET,这就是我所得到的(应该包括相关的推文)

[
    {
        "id": 2,
        "name": "Alex",
        "tweet": []
    }
]

1 个答案:

答案 0 :(得分:3)

这里:

{
    "id": 1,
    "user": {
        "id": 2,
        "name": "Alex",
        "tweet": []
    },
    "tweet": "Sew one button, doesn't make u a tailor"
}

从外观上看,您的Tweet对象具有tweet属性,而User对象具有一个数组,该数组映射与该用户相关的每个tweet,该示例上当前为空。

在我看来,您在Tweet和用户之间的双向映射上很像一个问题。考虑对双向关系使用mappedBy属性。