为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 Spring Boot 中正确连接表

如何在 Spring Boot 中正确连接表

茅侃侃 2022-12-21 16:40:00
我有一个用户,该用户有费用。在费用表中,我想要费用 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": []}现在我不确定我是否以错误的方式发送请求或以错误的方式加入表格或两者兼而有之。
查看完整描述

1 回答

?
一只甜甜圈

TA贡献1836条经验 获得超5个赞

尝试使用此有效负载发送 post 请求(字段“user”以小写字母开头),我认为用户对象中的“id”字段应该足够了


  { 

   "user":{

     "username":"abcd",

     "id":"1",

     "balance":"100"

    },

    "amount":"20"

  }

编辑:您还需要将 @JsonIgnoreProperties("expenses") 添加到您的 Expense 实体中,以防止 jackson 递归读取 json


@Entity

@Table(name = "Expenses")

public class Expense {


  @Id

  @GeneratedValue(strategy = GenerationType.IDENTITY)

  private Long id;


  @JsonIgnoreProperties("expenses")

  @ManyToOne

  @JoinColumn(name = "user_id")

  private User user;


  private Double amount;

.....


查看完整回答
反对 回复 2022-12-21
  • 1 回答
  • 0 关注
  • 126 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信