Salve galera, to apanhando a 2 dias ja tentando fazer com que a annotation do hibernate crie automaticamente relacionamentos em cascade mais só ficam restrict, alguem poderia me ajudar segue o codigo
package br.com.strutscadastro.pessoa.model;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Set;
import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.*;
import javax.persistence.Table;
import org.hibernate.annotations.*;
import br.com.strutscadastro.animal.model.AnimalVO;
@Entity
@Table(name="pessoa")
@NamedQueries(
value = {
@NamedQuery(name="PessoaVO.consultaPorCodigo", query="SELECT c FROM PessoaVO c WHERE c.codigo=:codigo")
}
)
public class PessoaVO implements Serializable {
@Id
@GeneratedValue(strategy= GenerationType.AUTO)
@Column(name="codigo")
private Integer codigo;
@Column(name="nome", nullable=true, length=50)
private String nome;
@Column(name="idade", nullable=true, length=3)
private Short idade;
@Column(name="endereco", nullable=true, length=100)
private String endereco;
@OneToMany(mappedBy = "dono", targetEntity = AnimalVO.class, fetch = FetchType.LAZY)
@Cascade(org.hibernate.annotations.CascadeType.ALL)
private List<AnimalVO> animais;
public PessoaVO(){}
public PessoaVO(Integer codigo){
setCodigo(codigo);
}
public Integer getCodigo() {
return codigo;
}
public String getNome() {
return nome;
}
public Short getIdade() {
return idade;
}
public String getEndereco() {
return endereco;
}
public void setCodigo(Integer codigo) {
this.codigo = codigo;
}
public void setNome(String nome) {
this.nome = nome;
}
public void setIdade(Short idade) {
this.idade = idade;
}
public void setEndereco(String endereco) {
this.endereco = endereco;
}
}
E:
package br.com.strutscadastro.animal.model;
import javax.persistence.*;
import org.hibernate.annotations.Cascade;
import org.hibernate.annotations.CascadeType;
import org.hibernate.annotations.ForeignKey;
import br.com.strutscadastro.pessoa.model.PessoaVO;
@Entity
@Table(name="animal")
@NamedQueries(
value={
@NamedQuery(name="AnimalVO.consultarPorCodigo", query="SELECT a FROM AnimalVO a WHERE a.codigo = :codigo")
}
)
public class AnimalVO {
@Id
@GeneratedValue(strategy= GenerationType.AUTO)
@Column(name="codigo")
private Integer codigo;
@Column(name="nome", nullable=true, length=50)
private String nome;
@ManyToOne(fetch=FetchType.EAGER)
@Cascade(org.hibernate.annotations.CascadeType.ALL)
@ForeignKey(name="dono_id")
private PessoaVO dono;
@Column(name="raca", nullable=true, length=50)
private String raca;
public Integer getCodigo() {
return codigo;
}
public String getNome() {
return nome;
}
public PessoaVO getDono() {
return dono;
}
public String getRaca() {
return raca;
}
public void setCodigo(Integer codigo) {
this.codigo = codigo;
}
public void setNome(String nome) {
this.nome = nome;
}
public void setDono(PessoaVO dono) {
this.dono = dono;
}
public void setRaca(String raca) {
this.raca = raca;
}
}
Classe abstractDao do hibernate:
package br.com.strutscadastro.abstractdao;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.AnnotationConfiguration;
import org.hibernate.cfg.Configuration;
public class AbstractDAO {
private static final SessionFactory SESSION_FACTORY;
static {
AnnotationConfiguration leitorXML = new AnnotationConfiguration();
Configuration conf = leitorXML.configure("hibernate.cfg.xml");
SESSION_FACTORY = conf.buildSessionFactory();
}
protected Session getSessaoAberta(){
return this.SESSION_FACTORY.openSession();
}
public Integer inserir(Object obj){
Integer codigoGerado = null;
Transaction transacao = null;
Session sessao = null;
try {
sessao = getSessaoAberta();
transacao = sessao.beginTransaction();
codigoGerado = (Integer) sessao.save(obj);
transacao.commit();
} catch (Exception e) {
e.printStackTrace();
if (transacao != null) {
transacao.rollback();
}
System.out.println("Erro ao tentar inserir OBJETO [" + obj+"]");
} finally {
if (sessao != null) {
sessao.close();
}
}
return codigoGerado;
}
public void alterar(Object obj){
Transaction transacao = null;
Session sessao = null;
try {
sessao = getSessaoAberta();
transacao = sessao.beginTransaction();
sessao.update(obj);
transacao.commit();
} catch (Exception e) {
if (transacao != null) {
transacao.rollback();
}
} finally {
if (sessao != null) {
sessao.close();
}
}
}
public void excluir(Object obj){
Transaction transacao = null;
Session sessao = null;
try {
sessao = getSessaoAberta();
transacao = sessao.beginTransaction();
sessao.delete(obj);
transacao.commit();
} catch (Exception e) {
if (transacao != null) {
transacao.rollback();
}
e.printStackTrace();
} finally {
if (sessao != null) {
sessao.close();
}
}
}
}
Mais vou ver no relacionamento criado utilizando o phpmyadmin ou qualquer outro e o bendito RESTRICT ta lá…
Alguem pode dar uma luz pra resolver isso
Muito Agradecido