I am working on a basic example to test cascade delete operation but I am getting exception. Here is my entities
@Table(name = "project")
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
public class Project implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name = "project_name")
private String projectName;
@ManyToOne(cascade = CascadeType.REMOVE)
private Student student;
...
}
and
@Entity
@Table(name = "student")
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
public class Student implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name = "name")
private String name;
...
}
I already have one student data and one project related to it, and my expectation is when I delete student data, that project will automatically be deleted. But when I delete student data, I got an error
Caused by: java.sql.SQLIntegrityConstraintViolationException: Cannot delete or update a parent row: a foreign key constraint fails (`document_control`.`project`, CONSTRAINT `FKjvi932wdxw4ux6m7u6abiy7qv` FOREIGN KEY (`student_id`) REFERENCES `student` (`id`))
I'm using JPA to delete the data, and here is my controller class
@DeleteMapping("/students/{id}")
public ResponseEntity<Void> deleteStudent(@PathVariable Long id) {
log.debug("REST request to delete Student : {}", id);
studentRepository.deleteById(id);
return ResponseEntity
.noContent()
.headers(HeaderUtil.createEntityDeletionAlert(applicationName, false,
ENTITY_NAME, id.toString()))
.build();
}
Am I missing something here?