私はSpring Bootで新しいものです。私はデータベースを持っている小さなアプリケーションを持っています。データベースにはテーブルとの境界が含まれています。 1つのデバイスは多くの罫線を持つことができますが、1つの罫線は1つのデバイスしか持つことができません私の問題は、1つ以上の罫線がある場合、私はデータベースからデバイスを削除することができないということです。デバイスに罫線がない場合は、削除することができます。OneToManyとManyToOneの注釈は私に問題を引き起こします
ここではデバイステーブルの罫線を定義しました。
@OneToMany(cascade=CascadeType.ALL, fetch=FetchType.LAZY)
@JoinColumn(name="device_id")
private Collection<Borders> borders = new ArrayList<>();
そして、ここで私は国境-テーブル内のデバイスを定義している方法です。ここで
@ManyToOne(cascade=CascadeType.ALL, optional=false)
@JoinColumn(name="device_id", updatable=false)
private Device device;
は、デバイスを削除する必要がありますDeviceServiceクラスからの私の方法です。
@Transactional()
public Boolean deleteDevice(DeviceVM devParam) {
User user = getLoginUser();
return deviceRepository.findDeviceByUserIdAndName(user.getId(), devParam.getName())
.map(dev -> {
deviceRepository.delete(dev);
return true;
})
.orElse(false);
}
前述したように、デバイスは、境界線がないときには削除できますが、境界線は削除できません。うまくいけば誰かが私を助けることができます。ここで私は、サーバーから見ることができるものエラーメッセージは次のとおりです。
2016年10月26日16:31:16.092 ERROR 10016 --- [NIO-8080-EXEC-7] flkimionpomo.aop.logging.LoggingAspect:原因= 'org.hibernate.exception.ConstraintViolationException:文を実行できませんでした'、例外= '文を実行できませんでした。 SQL [n/a];制約[null]。 org.hibernate.exception.ConstraintViolationException:ステートメント ' を実行できませんでした。org.springframework.dao.DataIntegrityViolationException:ステートメントを実行できませんでした。 SQL [n/a];制約[null]。入れ子の例外org.hibernate.exception.ConstraintViolationExceptionさ:org.springframework.orm.jpa.vendor.HibernateJpaDialect.convertHibernateAccessExceptionで声明 を実行できませんでした(HibernateJpaDialect.java:278)