Olá pessoal.
Estou implementando meus primeiros programas com o hibernate.
Estou usando annotations.
Consegui apagar minhas referências @OnteToMany com @OnDelete(action=OnDeleteAction.CASCADE), porém já tentei de diversas formas fazer o mesmo com @OneToOne, mas não consigo :sad:
Tem como fazer isso que estou tentando?
@Entity
public class Cliente {
@Id
@SequenceGenerator(name = "CLIENTE_ID_SEQ", sequenceName = "CLIENTE_ID_SEQ")
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "CLIENTE_ID_SEQ")
private int id;
private String nome;
private String fone;
private String estadoCivil;
@OneToOne(cascade=CascadeType.ALL)
@JoinColumn(name="documento_fk")
@OnDelete(action=OnDeleteAction.CASCADE)
private Documento documento;
....gets
....sets
@Entity
public class Documento {
@Id
@SequenceGenerator(name = "DOCUMENTO_ID_SEQ", sequenceName = "DOCUMENTO_ID_SEQ")
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "DOCUMENTO_ID_SEQ")
private int id;
private String rg;
private String cpf;
private String tituloEleitor;
@OneToOne(mappedBy="documento")
private Cliente cliente;
....gets
....sets
Muito obrigado pela ajuda.
Abraço a todos.
Pedro, tudo bem?
Solucionei meu problema.
Na verdade eu estava tão empolgado com o hibernate que nem preparei minha base direito, então o meu erro era de lógica de banco de dados e não tinha nada a ver com o hibernate. :lol:
Como um cliente vai ter um registro de documento(1:1) então quando eu apagar o cliente o registro do documento também terá de ser apagado.
Seguindo esse raciocínio a tabela de documento tem que ter uma chave estrangeira apontando para o registro do cliente (cliente_fk).
Obs.: eu estava fazendo o contrário. :oops:
Então o código fica assim:
CLASSE CLIENTE
@Entity
public class Cliente {
@Id
@SequenceGenerator(name = "CLIENTE_ID_SEQ", sequenceName = "CLIENTE_ID_SEQ")
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "CLIENTE_ID_SEQ")
private int id;
private String nome;
private String fone;
private String estadoCivil;
@OneToOne(cascade = CascadeType.ALL, mappedBy = "cliente")
private Documento documento;
//GET'S
//SET'S
CLASSE DOCUMENTO
@Entity
public class Documento {
@Id
@SequenceGenerator(name = "DOCUMENTO_ID_SEQ", sequenceName = "DOCUMENTO_ID_SEQ")
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "DOCUMENTO_ID_SEQ")
private int id;
private String rg;
private String cpf;
private String tituloEleitor;
@OneToOne(cascade=CascadeType.ALL)
@JoinColumn(name="cliente_fk")
@OnDelete(action=OnDeleteAction.CASCADE)
private Cliente cliente;
//GET'S
//SET'S
Estou gostando muito do hibernate.
Agora vou preparar umas classes DAO (que já estou tendo problemas devido a referência).
Mas vamos lá.
Um grande abraço.