如何在 Spring Boot 中正确连接表

我有一个用户,该用户有费用。在费用表中,我想要费用 ID、费用的用户和费用金额。在用户表中,我想要用户 ID、他的用户名、他的当前余额和他所做的所有费用的列表。


我想加入这两个,但我不知道如何正确引用用户,因此用户表单 Expense 类始终为空。


首先,我发送 post 请求来创建一个用户:


{

    "username":"abcd",

    "balance":"100"

}

然后我想产生一笔费用,但在这里我不确定如何正确发送用户:


{

    "username":"abcd",

    "id":"1",

    "balance":"100",

    "amount":"20"

}

这不起作用,然后我这样尝试:


{

    "User":{

    "username":"abcd",

    "id":"1",

    "balance":"100"

    },

    "amount":"20"

}

那也没有用。


这是用户类:


@Entity

@Table(name = "Users")

public class User {


    @Id

    @GeneratedValue(strategy = GenerationType.IDENTITY)

    private Long id;

    @NotBlank(message = "Username is mandatory")

    private String username;

    private Double balance = 0.0;


    @OneToMany(mappedBy = "user")

    private List<Expense> expenses;

    ...

我从这里删除了 getter 和 setter。


这是费用类:


@Entity

@Table(name = "Expenses")

public class Expense {


    @Id

    @GeneratedValue(strategy = GenerationType.IDENTITY)

    private Long id;


    @ManyToOne

    @JoinColumn(name = "user_id")

    private User user;


    private Double amount;

    ...

为了节省我使用的费用.save()并JpaRepository<Expense, Long>取回我使用的一切.findAll()。


结果总是一样的:得到所有的费用


{

        "id": 1,

        "user": null,

        "amount": 20

}

并为所有用户提供


{

        "id": 1,

        "username": "abcd",

        "balance": 100,

        "expenses": []

}

现在我不确定我是否以错误的方式发送请求或以错误的方式加入表格或两者兼而有之。



茅侃侃
浏览 129回答 1
1回答

一只甜甜圈

尝试使用此有效负载发送 post 请求(字段“user”以小写字母开头),我认为用户对象中的“id”字段应该足够了&nbsp; {&nbsp;&nbsp; &nbsp;"user":{&nbsp; &nbsp; &nbsp;"username":"abcd",&nbsp; &nbsp; &nbsp;"id":"1",&nbsp; &nbsp; &nbsp;"balance":"100"&nbsp; &nbsp; },&nbsp; &nbsp; "amount":"20"&nbsp; }编辑:您还需要将 @JsonIgnoreProperties("expenses") 添加到您的 Expense 实体中,以防止 jackson 递归读取 json@Entity@Table(name = "Expenses")public class Expense {&nbsp; @Id&nbsp; @GeneratedValue(strategy = GenerationType.IDENTITY)&nbsp; private Long id;&nbsp; @JsonIgnoreProperties("expenses")&nbsp; @ManyToOne&nbsp; @JoinColumn(name = "user_id")&nbsp; private User user;&nbsp; private Double amount;.....
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java