I try to persist parent entity with one to many relation:
@Entity
public class TrainEx  {
    private Set<TrainCompositionEx> trainCompositionsByTrainId;
    @OneToMany(cascade = {CascadeType.ALL}, fetch = FetchType.LAZY,  mappedBy = "trainByTrainId")
    public Set<TrainCompositionEx> getTrainCompositionsByTrainId() {
        return trainCompositionsByTrainId;
    }
    public void setTrainCompositionsByTrainId(Set<TrainCompositionEx> trainCompositionsByTrainId) {
        this.trainCompositionsByTrainId = trainCompositionsByTrainId;
    }
...
}
and child entity:
@Entity
public class TrainCompositionEx{
    @Id
    @ManyToOne(cascade = {CascadeType.REFRESH}, fetch = FetchType.LAZY)
    @JoinColumn(name = "trainId", referencedColumnName = "trainId", nullable = false, insertable = true, updatable = true)
    private TrainEx trainByTrainId;
....
}
So I recieve my TrainEx trainEx from json POST endpoint:
 @RequestMapping(method= RequestMethod.POST, consumes = "application/json", produces = "application/json")
    public @ResponseBody
    ResponseEntity<Void> addTrain(@RequestBody TrainEx trainEx) throws Exception {
        trainService.add(trainEx);
        return new ResponseEntity<Void>(HttpStatus.CREATED);
    }
json:
 {
    "trainId" : 5,
    "status" :  1,
    "maxWeight" :  200,
    "maxLength" :  35,
    "speed" :  60,
    "totalWeight" : 100,
    "totalLength" : 20,
    "trainCompositionsByTrainId": [{
        "wagonByWagonId": {"wagonId" : 2}
    }]
 } 
after I save it like that:
...
@Transactional
    public TrainEx add(TrainEx trainEx) {
    for(TrainCompositionEx trainCompositionEx : trainEx.getTrainCompositionsByTrainId()){
        trainCompositionEx.setTrainByTrainId(trainEx);
        trainCompositionEx.setWagonByWagonId(
                em.getReference(WagonEx.class, trainCompositionEx.getWagonByWagonId().getWagonId()));
    }
    return trainExRepository.save(trainEx);
    }
    ...
But I received SQL ERROR: null value in column "trainid" violates not-null constraint, but as you see I setted trainEx entity to TrainCompositionEx, and I stopped in debug mode and trainId exists there:
 so what should I do?
so what should I do?
UPDATE1: I investigated logs and think that problem in that childs persist before parent entity, because I insert into train_composition table, but not into train table see:
Hibernate: insert into tms.public.train_composition (version, transportOrderId, wagonId, trainId) values (?, ?, ?, ?)
 
    