Я использую весеннюю загрузку 2, jpa и hibernate.Db is postgres Я пытаюсь удалить объект с дочерним элементом
@Entity
@IdClass(SamplingsPK.class)
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
public class Samplings {
@Id
private int year; //only last 2 number 2018 -> 18
@Id
@GeneratedValue
private Integer sequenceId;
@OneToOne
private Colors color;
@OneToMany(mappedBy = "sampling", cascade = CascadeType.ALL, orphanRemoval = true)
private List<Samples> samples = new ArrayList<>();
@Embedded
private TestSamplings testSamplings;
...
}
public class SamplingsPK implements Serializable {
private int year;
private Integer sequenceId;
public SamplingsPK(int year, Integer sequenceId) {
this.sequenceId = sequenceId;
this.year = year;
}
private SamplingsPK() {
}
...
}
@Entity
@IdClass(SamplesPK.class)
public class Samples{
@Id
private String sampleLetter;
@Id
@ManyToOne(optional = false)
@JoinColumns({
@JoinColumn(name = "sampling_id", referencedColumnName = "sequenceId"),
@JoinColumn(name = "sampling_year", referencedColumnName = "year")})
private Samplings sampling;
@OneToOne(mappedBy = "sample", cascade = CascadeType.ALL, fetch = FetchType.LAZY, orphanRemoval = true)
private TestSamples testSamples;
...
}
@Entity
public class TestSamples {
@Id
@SequenceGenerator(name = "test_samples_id_seq", sequenceName = "test_samples_id_seq", allocationSize = 1)
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "test_samples_id_seq")
private Integer id;
@OneToOne(fetch = FetchType.LAZY)
private Samples sample;
@OneToOne(mappedBy = "testSample", fetch = FetchType.LAZY, cascade = CascadeType.ALL, orphanRemoval = true)
private Compressions compressionTest;
....
}
@Repository
public interface SamplingsRepository extends JpaRepository<Samplings, SamplingsPK> {
}
Если я удаляю Samplings, Samples, TestSamples и Compressions должны быть удалены.
My delete
@Transactional
public void deleteSamplings(int year, Integer id) {
samplingsRepository.deleteById(new SamplingsPK(year, id));
}
Когда этот метод вызывается, я вижу
delete from samples, где sample_letter =?и sampling_id =?и sampling_year =?
2018-10-03 22: 21: 05.832 ОШИБКА 14511 --- [nio-8080-exec-9] ohiExceptionMapperStandardImpl: HHH000346: Ошибка во время управляемого сброса [Пакетное обновление вернуло неожиданное количество строк изобновление [0];фактическое количество строк: 0;ожидается: 1] 2018-10-03 22: 21: 05.834 INFO 14511 --- [nio-8080-exec-9] ohejbinternal.AbstractBatchImpl: HHH000010: При выпуске пакета оно все еще содержало операторы JDBC 2018-10-03 22:21: 05.848 ОШИБКА 14511 --- [nio-8080-exec-9] oaccC [. [. [/]. [DispatcherServlet]: Servlet.service () для сервлета [dispatcherServlet] в контексте с путем [] выбросило исключение [Запрособработка не удалась;вложенное исключение - org.springframework.orm.ObjectOptimisticLockingFailureException: пакетное обновление вернуло неожиданное количество строк из обновления [0];фактическое количество строк: 0;ожидается: 1;вложенным исключением является org.hibernate.StaleStateException: пакетное обновление вернуло неожиданное количество строк из обновления [0];фактическое количество строк: 0;ожидается: 1] с первопричиной в com.lcm.service.SamplingsService $$ EnhancerBySpringCGLIB $$ d589edcb.deleteSamplings () ~ [main /: na]
нет запросов на выборку и другие
просто найдите способ удалить каждую вещь ...