Seleccionar página

¿Como poner en BD las foráneas en modo CASCADE con Hibernate? Para indicar que una foránea se quiere poner en BD en modo CASCADE hay que usar la siguiente anotación:

@OnDelete(action = OnDeleteAction.CASCADE)

Un ejemplo, en la clase Establecimiento, que tiene un listado de Características, la tabla establecimiento_caracteristicas que tiene como foránea el id_establecimiento. Si queremos que esa foránea sea puesta en la BD como CASCADE hay que poner lo siguiente:

@Entity
@Table(name = "establecimiento")
public class Establecimiento implements java.io.Serializable {

...

private Set<EstablecimientoCaracteristica> establecimientoCaracteristicas = new HashSet<EstablecimientoCaracteristica>(
0);

....

@OnDelete(action = OnDeleteAction.CASCADE)
@OneToMany(fetch = FetchType.LAZY, mappedBy = "establecimiento")
public Set<EstablecimientoCaracteristica> getEstablecimientoCaracteristicas() {
return this.establecimientoCaracteristicas;
}

...

}

Si se le quisiera poner un nombre concreto a esa foránea se podría hacer con la anotación siguiente:

@ForeignKey(name=”FK_ESTABLECIMIENTO”)

Si en vez de como en el ejemplo anterior que es un OneToMany fuera un @ManyToMany aquí hay otro ejemplo, en el que se usa “inverseName” ya que hay que crear 2 foráneas en la tabla de enlace del ManyToMany:

@Entity
public class Woman {
    ...
    @ManyToMany(cascade = {CascadeType.ALL})

@ForeignKey(name = “TO_WOMAN_FK”, inverseName = “TO_MAN_FK”)

    public Set<Man> getMens() {
        return mens;
    }
}

alter table Man_Woman add constraint TO_WOMAN_FK foreign key (woman_id) references Woman
alter table Man_Woman add constraint TO_MAN_FK foreign key (man_id) references Man

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.plugin cookies

ACEPTAR
Aviso de cookies

Pin It on Pinterest