Pessoa, boa tarde.
Estou tentando realizar uma Cascade Update e Cascade Delete, em uma classe Herança com JPA. Mas infelizmente eu não estou conseguindo gerar este mesmo.
Segue o devido código da classe Pai:
Classe Pai
package comunicacao.banco.de.dados.model;
import java.io.Serializable;
import java.util.Date;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.ForeignKey;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;
import javax.persistence.JoinColumn;
import javax.persistence.OneToOne;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import lombok.Data;
@Inheritance(strategy = InheritanceType.JOINED)
@Data
@Table(name = "Pessoa")
@Entity
public abstract class Pessoa implements Serializable {
@Id
@Column(name = "idPessoa", updatable = true, nullable = false, unique = true)
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int idPessoa;
@Column(name = "nomePessoa", nullable = true)
private String nomePessoa;
@Column(name = "imagemPessoa", nullable = true)
private byte[] imagemPessoa;
@Column(name = "emailPessoa", nullable = true)
private String emailPessoa;
@Column(name = "senhaPessoa", nullable = true)
private String senhaPessoa;
@Column(name = "fonePessoa", nullable = true)
private String fonePessoa;
@Column(name = "celularPessoa", nullable = true)
private String celularPessoa;
@Column(name = "dataCadastroPessoa", nullable = true)
@Temporal(value = TemporalType.TIMESTAMP)
private Date dataCadastroPessoa;
@OneToOne
@JoinColumn(name = "idClinica",
foreignKey = @ForeignKey(name = "idClinica",
foreignKeyDefinition = "FOREIGN KEY(idClinica) REFERENCES clinica(idClinica) ON UPDATE CASCADE ON DELETE CASCADE"),
nullable = false)
private Clinica clinica;
@OneToOne
@JoinColumn(name = "idCargo",
foreignKey = @ForeignKey(name = "idCargo",
foreignKeyDefinition = "FOREIGN KEY(idCargo) REFERENCES cargo(idCargo) ON UPDATE CASCADE ON DELETE CASCADE"),
nullable = false)
private Cargo cargo;
}
------------------------
> Classe Filha
------------------------
package comunicacao.banco.de.dados.model;
import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.ForeignKey;
import javax.persistence.JoinColumn;
import javax.persistence.OneToOne;
import javax.persistence.PrimaryKeyJoinColumn;
import javax.persistence.Table;
import lombok.Data;
@Entity
//@OnDelete(action = OnDeleteAction.CASCADE)
@Table(name = "Profissional")
@PrimaryKeyJoinColumn(name = "idProfissional", foreignKey = @ForeignKey(name = "idProfissional",
foreignKeyDefinition = "FOREIGN KEY(idProfissional) REFERENCES pessoa(idPessoa) ON UPDATE CASCADE ON DELETE CASCADE"))
@Data
public class Profissional extends Pessoa implements Serializable {
@Column(name = "conselhoProfissional", nullable = true)
private String conselhoProfissional;
@OneToOne
@JoinColumn(name = "idEspecialidade", foreignKey = @ForeignKey(name = "idEspecialidade"), nullable = true)
private Especialidade especialidade;
}