Возникает ошибка при добавлении данных массива в базу данных. OneToMany и ManyToOne

Есть две сущности , User и Family , у юзера может быть много родственников, поэтому был реализован метод , на который направляется массив json c информацией о родственниках. Когда я пытаюсь сохранить , возникают различные ошибки. Пробовал разные способы. Я оставлю код , посмотрите пожалуйста , в чем может быть проблема ? Любой рабочий вариант подойдет:

Request json который направляю на ендпоинт:

[
{
"name":"luda",
"surname":"Petrova",
"phone":"2353636",
"bus":"black"
},
{
"name":"dima",
"surname":"Petrov",
"phone":"23536336",
"bus":"red"
},
{
"name":"ivan",
"surname":"Petrov",
"phone":"2353",
"bus":"blue"
}
] 

RestController , много раз менял , оставлю этот вариант:

 @RequestMapping(value = { "fam/{id}" },method = RequestMethod.POST)
    public User addyfam (@PathVariable Long id, @RequestBody List<FamReq> fammreq){
        User usr = userRepo.findById(id).get();     
                var arr = new ArrayList<Family>();
        
        for(FamReq f : fammreq ) {
    
             arr.add(new Family( f.getName(),f.getSurname(),f.getPhone(),f.getBus()));
             
        }
                
        usr.setFamily(arr);
        
        userRepo.save(usr);     
        return usr;
    }

Сущность User :

@Entity
@Table(name="usr")
public class User {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    
    @Column(name="name")
    private String name;
    
    @Column(name="surname")
    private String surname;

    @OneToOne(
            mappedBy = "user",
            cascade = CascadeType.ALL,
            orphanRemoval = true,
            fetch = FetchType.LAZY
        )
    @JsonManagedReference
    private Passport passport;
    
    
    @OneToMany(
            mappedBy = "user",
            cascade = {CascadeType.ALL},
            orphanRemoval = true
        )
    private List<Family> family = new ArrayList<>();

  public void addFamily(Family fam) {
        family.add(fam);
        fam.setUser(this);
 
  /**get/set and constr **/


}


Сущность Family : 

@Entity
@Table(name="family")
public class Family {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    
    @Column(name="name")
    private String name;
    
    @Column(name="surname")
    private String surname;
    
    @Column(name="phone")
    private String phone;
    
    @Column(name="bus")
    private String bus;

    @ManyToOne(
            fetch = FetchType.LAZY
        )
    @MapsId
    @NotFound(action = NotFoundAction.IGNORE)
    private User user;
    
   /**get/set and constr **/
}

В данном примере выходит ошибка Error: attempted to assign id from null one-to-one property [com.dbtest.springboot.db_model.Family.user] , если внести изменения как указано в блоге https://vladmihalcea.com/the-best-way-to-map-a-onetomany-association-with-jpa-and-hibernate/

То возвращается ошибка: ОШИБКА: значение NULL в столбце id отношения family нарушает ограничение NOT NULL . Это в том случае , когда собирается объект через foreach и устанавливается с помощью метода в User :

  public void addFamily(Family fam) {
        family.add(fam);
        fam.setUser(this);
     

Ответы (0 шт):