저는 Spring Boot의 새로운 기능을 사용합니다. 데이터베이스가있는 작은 응용 프로그램이 있습니다. 데이터베이스 장치 및 테두리가입니다. 하나의 장치는 많은 테두리를 가질 수 있지만 하나의 테두리는 하나의 장치 만 가질 수 있습니다. 내 문제는 하나 이상의 테두리가있을 때 데이터베이스에서 장치를 제거 할 수 없다는 것입니다. 기기에 테두리가 없으면 제거 할 수 있습니다.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 간부 -7-] flkimionpomo.aop.logging.LoggingAspect 여기서 I는 서버에서 볼 수있는 에러 메시지이다 : cause = 'org.hibernate.exception.ConstraintViolationException : 문을'실행할 수 없습니다 '및 예외 ='문을 실행할 수 없습니다. 예외로 fi.jurt.kimionpomo.web.rest.DeviceResource.deleteDevice()에서 예외가 발생했습니다. 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) 국경 테이블 당신이 돈에서