Caro amigo,
Estou com um “probleminha” muito irritante, no qual não estou conseguindo gerar a contraints correta (DELETE CASCADE ou UPDATE CASCADE) no meu banco de dados (PostgreSQL) através do Hibernate.
NOTA: Estou utilizando o hibernate-3.2.0.cr2 e o hibernate-annotations-3.2.0.cr1, ou seja, segui as dicas do site hibernate.org
http://www.hibernate.org/247.html
Tenho o seguinte código (POJO) do meu moledo de banco:
package br.com.faespsenar.sicp.model;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
@Entity
public class Estado implements Serializable {
@Id
@GeneratedValue
private Long id;
@Column(length = 50)
private String nome;
@Column(length = 2)
private String uf;
@ManyToOne(cascade=CascadeType.ALL)
@JoinColumn(name="pais_id")
private Pais pais;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public Pais getPais() {
return pais;
}
public void setPais(Pais pais) {
this.pais = pais;
}
public String getUf() {
return uf;
}
public void setUf(String uf) {
this.uf = uf;
}
}
O hibernate esta me gerando o seguinte script da minha entidade (tabela):
CREATE TABLE "public"."estado" (
"id" BIGINT NOT NULL,
"nome" VARCHAR(50),
"uf" VARCHAR(2),
"pais_id" BIGINT,
CONSTRAINT "estado_pkey" PRIMARY KEY("id"),
CONSTRAINT "fk7c49258660bd82d" FOREIGN KEY ("pais_id")
REFERENCES "public"."pais"("id")
ON DELETE NO ACTION
ON UPDATE NO ACTION
NOT DEFERRABLE
) WITHOUT OIDS;
Mas o correto seria:
CREATE TABLE "public"."estado" (
"id" BIGINT NOT NULL,
"nome" VARCHAR(50),
"uf" VARCHAR(2),
"pais_id" BIGINT,
CONSTRAINT "estado_pkey" PRIMARY KEY("id"),
CONSTRAINT "fk7c49258660bd82d" FOREIGN KEY ("pais_id")
REFERENCES "public"."pais"("id")
ON DELETE CASCADE
ON UPDATE CASCADE
NOT DEFERRABLE
) WITHOUT OIDS;
Obrigado por sua atenção, aguardo qualquer dica ou esclarecimento sobre o assunto.
