He heredado una base de código en el que casi todas las relaciones tienen las siguientes anotaciones:cascada de JPA = REMOVE y Hibernate @OnDelete utilizados juntos?
@OneToMany(fetch = FetchType.LAZY, cascade = { CascadeType.REMOVE }, mappedBy = "someThing")
@OnDelete(action = OnDeleteAction.CASCADE)
Ahora estoy teniendo problemas para entender lo que hace @OnDelete
en el primer lugar. Hibernate: OnDelete vs cascade=CascadeType.REMOVE es interesante, pero desafortunadamente no tiene ninguna respuesta y JavaDoc para @OnDelete
es particularmente inútil.
De las otras preguntas parece que la anotación OnDelete permite de alguna manera que el DB haga la cascada, mientras que la directiva en cascada en @OneToMany
permite que la ORM lo haga, pero ¿cuál sería el propósito de usarlas juntas?
¿Y la directiva en cascada de @OneToMany
realmente no permite que la implementación de ORM genere una cascada basada en DB de todos modos?
El comportamiento con un '@ OneToOne' y una' no parece @ OneToMany' a ser lo mismo. Con '@OneToMany (...) @OnDelete (action = OnDeleteAction.CASCADE) Object doors', parece que eliminar la casa borra todas sus puertas, pero eliminar una puerta no elimina la casa. – Bruno
Tendría que ser '@OneToMany List
No estoy de acuerdo. Creo que la mayor diferencia entre '' 'CascadeType.REMOVE''' y' '' @ OnDelete''' en la vista del usuario es que '' '@ OnDelete''' puede funcionar con JPAQL (ya que está basado en DB cascada), pero '' 'CascadeType.REMOVE''' no puede funcionar con JPAQL. – okwap