У меня есть объект Medico
с коллекцией <MedicoMatricula>
, проблема возникает, когда я пытаюсь удалить MedicoMatricula
и добавить еще один (очень похожий), SQL выполняет 1-й INSERT, а не DELETE, поэтому срабатывает единственное ограничение. Все это делается путем слияния (Medico) с CASCADE.ALL коллекции после подтверждения пользователя / клиента, поэтому я не могу разделить процесс удаления 1-го элемента, как только пользователь это сделал (выполнить слияние), и сделать еще одно слияние с новым элементом.
Это способ изменить поведение Eclipselink? скажите ему, чтобы 1-й запускал удаление перед вставкой или обновлением ??
@Entity
@Table(uniqueConstraints = {
@UniqueConstraint(name = "medicomatricula_medico_provincia", columnNames = {"medico_id", "provincia_id"})
,
@UniqueConstraint(name = "medicomatricula_provincia_matricula_tipo", columnNames = {"numero", "provincia_id", "tipo"})
})
public class MedicoMatricula implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
@JoinColumn(nullable = false)
@ManyToOne(optional = false)
private Medicos medico;
@JoinColumn(nullable = false)
@ManyToOne(optional = false)
private Provincia provincia;
/**
* Única por médico y provincia, sin importar las especialidades
*/
@Column(nullable = false)
private Integer numero;
/**
* M= Médico, O= Odontólogo, P= Psiquiatra, K= Kinesio, N= Nutricionist
*/
@Column(nullable = false, length = 1)
private String tipo;