Olá estou fazendo um formulario seguindo a apostila do vraptor mas tive o seguinte problema:
Quando eu mando atualizar o campo no banco se o mesmo estiver null ele da o update setando como null no banco como faço para que ele só altere os campos que tiverem algo dentro ?
Não sei como está fazendo, mas será que assim não resolve?
if(!campo==null){
campo.update();
}
R
rof20004
Carrega o objeto do banco, e da um set nos atributos que voce alterou.
G
gabriel.ggt
não resolve pq o campo em questão não é carregado no Formulario eu seto ele por tras dos panos então se eu disser que el é null ele nunca vai dar o update…
O ideal seria se o hibernate só atualizasse os campos que não fossem null
G
gabriel.ggt
e como eu faria isso ?
R
rof20004
Como voce pega o objeto do formulario ?
No meu caso uso Struts 1, e seto um objeto no mesmo, depois uso DynaActionForm formularioObjeto,
Depois o Objeto em java, ObjetoTO objeto = fomularioObjeto.get(“objeto”);
Se voce nao estiver usando struts 1 nem copie esse codigo
Como voce pega um objeto do formulario ?
G
gabriel.ggt
rof20004:
Como voce pega o objeto do formulario ?
No meu caso uso Struts 1, e seto um objeto no mesmo, depois uso DynaActionForm formularioObjeto,
Depois o Objeto em java, ObjetoTO objeto = fomularioObjeto.get(“objeto”);
Se voce nao estiver usando struts 1 nem copie esse codigo
Como voce pega um objeto do formulario ?
segui sua linha de raciocínio…
Recuperei o dado ja salvo no banco mas o hibernate me deu essa excessão:
br.com.caelum.vraptor.InterceptionException: exception raised, check root cause for details: org.hibernate.NonUniqueObjectException: a different object with the same identifier value was already associated with the session: [br.com.wrk.model.Empreendedor#1]
Agora sete as mudancas no objetoQueVaiPersistir (Ele que abriu uma session com o banco, entao ele que tem que ser persistido, entendeu agora o porque do erro ?)
// Aqui voce vai setar SOMENTE as variaveis que voce alterou. Geralmente os campos da alteracao sao pre-definidos no formulario, entao so setar os mesmo.
// Por exemplo, o meu objeto tem N variaveis, mas no form de alteracao so altero 2. Nome e Endereco.
Se voce tiver definido as variaveis no struts nem precisa setar outro objeto com os dados do form, pode usar o request.getAttribute diretamente no objetoQueVaiPersistir, exemplo: objetoQueVaiPersistir.setNome(request.getAttribute(“nome”).toString());
Por ultimo: objetoDAO.UPDATE(objetoQueVaiPersistir);