estou com bastante duvida quanto aos cascade, o que cada um significa, tipo, se eu colocar cascade=“sabe-update” numa relacao one-to-one o que acontece??
eu estou com um relacionamento entre instituicao e endereco de one-to-one, em endereco a chave primaria eh uma chave estrangeira para instituicao e no xml de instituicao eu coloquei cascade=“save-update”, nao esta dando erro de execucao, mais ele consegue buscar o endereco mas nao consegue inserir, tem haver com o cascade??? se tiver qual q eu coloco???
Então olh ao que acontece, se você não colocar cascade na instituição quando vc adicionar o endereço na instituição e tentar salvar, vai retornar um erro reclamando de um objeto detached, ou seja, você tentou inserir uma instituição com referência a um endereço mas não salvou o endereço. Ao colocar cascade no nó mais forte, no caso instituição ao salvar a instituição automaticamente o hibernate considera que você também quer salvar o endereço e ja faz isto para você.
Exemplo sem cascade :
DAO<Instituicao> DAOInstituicao = DAOFactory.getDAO(Instituicao.class);
DAO<Endereco> DAOEndereco = DAOFactory.getDAO(Endereco.class);
Instituicao inst = new instituicao();
Endereco end = new Endereco();
inst.setNome("teste");
end.setRua("Rua de Teste");
inst.adicionaEndereco(end);
Obs: Lembrando que no seu DAO existe o begginTransation e comit…
Exemplo com cascade :
DAO<Instituicao> DAOInstituicao = DAOFactory.getDAO(Instituicao.class);
Instituicao inst = new instituicao();
Endereco end = new Endereco();
inst.setNome("teste");
end.setRua("Rua de Teste");
inst.adicionaEndereco(end);
DAOInstituicao.persiste(inst);