Hibernate - Auto-Relacionamento limpa o Conteudo do PAI

0 respostas
Romildo_Paiter

E ai pessoal, esse é meu projeto webapp em java, e estou utilizando o struts e o Hibernate.

Acontece que eu fiz um auto relacionamento, e esse auto relacionamento tá funcionando tão bem, que ta limpando o conteúdo do registro do pai.
Vou postar meu código em baixo, e eu se alguém souber como eu faço para isso parar de acontecer, eu ficarei muito agradecido.

@Entity
public class Categoria {

	@Id
	@GeneratedValue(strategy=GenerationType.IDENTITY)
	@Column(nullable=false)
	private int id;

	// Exemplo e auto-relacionamento utilizando o Hibernate
	@OneToMany(mappedBy="subCategoria", fetch=FetchType.LAZY)
	@Cascade(CascadeType.ALL)
	private List<Categoria> listaSubCategoria;
	
	@ManyToOne(fetch = FetchType.EAGER)
	@JoinColumn(name="id_SubCategoria", insertable = true,
			updatable = true)
	@Fetch(FetchMode.JOIN)
	@Cascade({CascadeType.SAVE_UPDATE})
	private Categoria subCategoria;
	
	@OneToMany(mappedBy="categoria")
	@Cascade({CascadeType.ALL, CascadeType.DELETE_ORPHAN})	
	private List<Produto> produto;
	
	private String nomeCategoria;
	private String descricaoCategoria;
	
	@Temporal(TemporalType.TIMESTAMP)
	private Date dataCadastroCategoria;
	
	private StatusEnum  statusCategoria;
	private DeleteEnum  deletedCategoria;

Esse metodo abaixo, ele é responsavel por retornar um objeto Categoria que foi atribuido dentro da actionForm;

// public Categoria gravarCategoria(CategoriaActionForm form){ Categoria categoria = new Categoria(); if (form.getId() != null){ categoria.setId( Integer.parseInt(form.getId()) ); } categoria.setNomeCategoria(form.getNomeCategoria()); categoria.setDescricaoCategoria(form.getDescricaoCategoria()); categoria.setDataCadastroCategoria(new Date()); categoria.setStatusCategoria(StatusEnum.deInt(Integer.parseInt(form.getStatusCategoria()))); if (!form.getIdCategoria().equals("0")){ Categoria subCategoria = new Categoria(); subCategoria.setId(Integer.parseInt(form.getIdCategoria())); categoria.setSubCategoria(subCategoria); } // categoria.setDeletedCategoria(DeleteEnum.valueOf(form.getDeletedCategoria())); return categoria; }

E este código é o meu codigo da action, que faz a inserção. desse objeto no banco de dados.

public ActionForward salvarCategoria(ActionMapping mappging, BaseActionForm form,
			HttpServletRequest request, HttpServletResponse response){
		
		
		CategoriaActionForm categoriaForm = (CategoriaActionForm) form;
		
		// Instancia do Objeto DAO
		CategoriaDAO categoriaDAO = new CategoriaDAO();
		
		Categoria categoria = new Categoria();
		
		categoria = categoriaForm.gravarCategoria(categoriaForm);
		
		System.out.println(categoria.getNomeCategoria());
		
		categoriaDAO.inserir(categoria);			
		
		return mappging.findForward("sucesso");
		
	}

Obrigado pessoal, desde já agradeço a ajuda de todos.

att

Romildo Jozue Paiter

Criado 14 de maio de 2010
Respostas 0
Participantes 1