Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring引导多对多post方法不更新数据_Spring_Spring Boot_Jpa_Spring Data Jpa_Many To Many - Fatal编程技术网

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