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