在springBoot数据中对实体表有许多关系的Post请求jpa错误404



我试图向我的用户表发出post请求,用户实体与竞赛实体具有多对多关系,竞赛实体与团队实体具有多对多关系,但我收到错误404。下面是代码:

用户:

@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@Entity
@Table(name = "user")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
private String email;
private String password;
private Boolean isAdmin;
@ManyToMany
private List<Contest> contests;

}

比赛:

@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@Entity
@Table(name = "contest")
public class Contest {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
private String name;
@ManyToMany(mappedBy = "contests")
private List<Team> teams;
@ManyToMany(mappedBy = "contests")
private List<User> users;

}

团队:

@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@Entity
@Table(name = "team")
public class Team {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
@ManyToMany
private List<Contest> contests;
private String name;
private int wins, looses;

}
Post request JSON:

{
"email":"john",
"password":"bravo",
"isAdmin":true
}

我似乎不能使它工作,在创建关系之前,其余API正常工作,所以问题不在我的存储库,服务,也不是控制器。

我尝试使用JSON在邮差顶部创建post请求,但我得到错误404,我希望能够在我的表中保存新的实体。

您应该尝试使用@JoinTable注释,因为@ManyToMany关系需要更多的映射,请参考下面的文章,它应该有所帮助。

https://www.baeldung.com/jpa-many-to-many

谢谢Bart,我使用了@joinTable并使其工作!例子:

@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@Entity
@Table(name = "contest")
public class Contest {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
private String name;
@ManyToMany(mappedBy = "contests",cascade = CascadeType.ALL)
private List<Team> teams;
@ManyToMany(cascade = CascadeType.ALL)
@JoinTable(
name = "contest_user",
joinColumns = @JoinColumn(name = "contest_id"),
inverseJoinColumns = @JoinColumn( name = "user_id")
)
private List<User> users;

}
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@Entity
@Table(name = "user")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
private String email;
private String password;
private Boolean isAdmin;
@ManyToMany(mappedBy = "users",cascade = CascadeType.ALL)
private List<Contest> contests;

}

最新更新