So I have class like below and trying to implement ManyToOne relationship
@Entity(name="request_city_id")
@Table(uniqueConstraints={@UniqueConstraints{columnNames={"request_id","cityId"})})
@Data
@NoArgsConstructor
@FieldDefault(level=AccessLevel.PRIVATE)
public class RequestCityId{
@GenratedValue(strategy=SEQUENCE, generator="seq_req_city_id")
@SequenceGenerator(name="seq_req_city_id", allocationSize=1)
@Column(name="rc_id")
@Id
long id;
//some other many to one joins
@ManyToOne
@JoinColumn(name="request_id")
Request request;
String cityId;
String status;
RequestCityId(Request req){
request= req;}
}
Existing table:
@Entity(name="request")
@Data
@NoArgsConstructor
@FieldDefault(level=AccessLevel.PRIVATE)
public class Request{
String frequency
@GenratedValue(strategy=SEQUENCE, generator="seq_req_d")
@SequenceGenerator(name="seq_req_id", allocationSize=1)
@Column(name="request_id")
@Id
long id;
@OneToMany(cascade={ PERSIST, MERGE}, mappedBy="request", fetch=EAGER)
Set<RequestCityId> requestCityIds;
}
below is serviceClass:
RequestRepository reqRepo; // this class extends crudRespository
public RequestDto merge(RequestDto request){
Request req= mapper.requestDtoToRequest(request);
Request enhancedObject = enhanceReq( req);
Request savedObject = reqRepo.save(enahncedObject);
return mapper.requestToRequestDto(savedObject)
}
private Request enhanceReq(Request req){
Set<RequestCityId> requestCityIds= req.getRequestCityIds();
requestCityIds.foreach(e-> e.setRequest(req));
return req;
}
but when I am running my code it is trying to insert multiple times, due to that I am getting constraint violation, what should I do to resolve this?