Home > Software design >  How to insert data in ManyToMany Rest Api
How to insert data in ManyToMany Rest Api

Time:01-18

I can not find the way to insert data using ManyToMany in spring boot. Can anyone please suggest me how to save data using M-To-M in spring boot and hibernate.

Here down is my code.

Entity

@Entity
@Table(name = "user_master")
public class Users {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer user_id;

    private String name;

    @JsonManagedReference
    @ManyToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
    @JoinTable(name = "users_roles", joinColumns = { @JoinColumn(name = "user_id") }, inverseJoinColumns = {
            @JoinColumn(name = "role_id") })
    private Set<Roles> roles;

    // constructor and getter/setter
}

@Entity
@Table(name = "role_master")
public class Roles {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer role_id;

    private String name;

    @JsonBackReference
    @ManyToMany(cascade = CascadeType.ALL, mappedBy = "roles")
    private Set<Users> users;

    // constructor and getter/setter
}

service

@Override
    public Users addAddressPerson(Set<Users> users) {
        for(Roles roles: users.getRoles()) // Error: The method getRoles() is undefined for the type List<Users>
        {
            roles.setUsers(users); // Error: The method setUsers(Set<Users>) in the type Roles is not applicable for the arguments (Users)
        }
        return UserRepo.save(users);
    }

CodePudding user response:

try

@Override
public List<Users> addAddressPerson(List<Users> users) {
    for(User user: users) {
        for(Roles roles: user.getRoles()) {
            roles.getUsers().add(user);
        }
    }
    return users.stream().map(UserRepo::save).collect(Collectors.toList());
}
  •  Tags:  
  • Related