Ich verwende Spring und MySql-Datenbank. Ich versuche, Benutzer von der Benutzertabelle zu löschen, die mit Posttabelle als eine zu viele Beziehung verbunden ist.So lösen Sie Eine übergeordnete Zeile kann nicht gelöscht oder aktualisiert werden: Eine Fremdschlüsseleinschränkung schlägt in Spring fehl.
User.java
@OneToMany(mappedBy = "user", fetch = FetchType.EAGER, cascade = { CascadeType.MERGE, CascadeType.PERSIST })
private List<Post> posts;
//getters and setters
}
Post.java
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn (name="profesor_id", referencedColumnName="id", unique=true)
private User user;
//getters and setters
Profesor.java
@Entity
public class Profesor extends User {
private String jobTitle;
public String getJobTitle() {
return jobTitle;
}
public void setJobTitle(String jobTitle) {
this.jobTitle = jobTitle;
}
}
Controller.java
@RequestMapping(value="profesorList/{id}/deleteProfesor", method=RequestMethod.GET)
public ModelAndView deleteProfesor(@PathVariable long id){
profesorRepository.delete(id);
return new ModelAndView("redirect:/profesorList");
}
index.html
<td><a th:href="@{'/profesorList/{id}/deleteProfesor'(id=${profesor.id})}"</a></td>
UserRepository.java
@Repository
public interface UserRepository extends CrudRepository<User, Long>, UserDetailsService {
public User findUserByUsername(String username);
}
ProfesorRepository.java
@Repository
public interface ProfesorRepository extends JpaRepository<Profesor, Long>{
}
Ich verwende eine Tabelle Vererbung. So habe ich Benutzer und profesor in der gleichen Tabelle wie Benutzer.
Aber wenn ich versuche, es auszuführen ich diese Störung erhalte:
Cannot delete or update a parent row: a foreign key constraint fails (`data`.`post`, CONSTRAINT `FK5q2menkhkd7av4xfslbgbuq3y` FOREIGN KEY (`profesor_id`) REFERENCES `users` (`id`))
Wie kann ich es lösen?