Spring引导多对多post方法不更新数据
我的用户类如下所示:Spring引导多对多post方法不更新数据,spring,spring-boot,jpa,spring-data-jpa,many-to-many,Spring,Spring Boot,Jpa,Spring Data Jpa,Many To Many,我的用户类如下所示: @Data @Entity public class User { @Id Long userID; @ManyToMany(mappedBy = "admins") private List<ClassRoom> classRooms = new ArrayList<>(); } @Data @Entity public class ClassRoom { @Id @GeneratedValue(
@Data
@Entity
public class User {
@Id
Long userID;
@ManyToMany(mappedBy = "admins")
private List<ClassRoom> classRooms = new ArrayList<>();
}
@Data
@Entity
public class ClassRoom {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
Long classRoomID;
@ManyToMany
@JoinTable(name ="classroom_user",
joinColumns = @JoinColumn(name = "classroom_id"),
inverseJoinColumns = @JoinColumn(name = "user_id"))
private List<User> admins = new ArrayList<>();
}
在我的UserController类中,我有:
@PostMapping("user/{id}/c")
User addClassRoom(@PathVariable Long id,@RequestBody ClassRoom newClassRoom)
{
logger.debug(repository.findById(id));
return repository.findById(id)
.map(user -> {
user.getClassRooms().add(newClassRoom);
user.setClassRooms(user.getClassRooms());
return repository.save(user);
})
.orElseGet(() -> {
return null;
});
}
我发布并清空JSON{},我看不到我的用户有任何变化。教室或空教室不会添加到用户中
这里有什么问题?如何解决此问题?user.getclasses.addnewclassification;已经足够了,user.setClassRoomsuser.getQuothers;不需要
您必须执行级联保存操作。明确列出所有级联类型,不要使用mappedBy,而是使用joincolumns注释。您能粘贴日志吗?Hibernate正在向您的表中插入数据吗?数据库架构是否已在数据库中正确创建?我建议您做的一件事是使用如下注释在用户类的顶部添加自定义表名:@Tablename=users。在大多数SQL方言中,user是一个保留关键字,因此建议始终以稍微不同的方式注释user类,这样Hibernate在为该实体创建表时就不会有任何问题。IMO您必须通过存储库中的id来查找教室,如果它是新的,则必须先创建一个新实体并保存它。然后将其分配给用户并保存。 您从post方法接收的对象不是由实体管理器创建的。在使用user.getquestions.addNewQuestival之后 我们必须使用userRepository.saveuser