Buenos dias,
Tenho uma aplicação que eu gostaria de fazer o controle de concorrência no modo DIRTY.
A idéia é que 2 usuários possam atualizar campos diferentes no mesmo registro, ao mesmo tempo.
Como isso seria possível?
Estou usando ExtJS (tela) e mantenho o bean serializado nele.
Quando vou salvar o bean, eu tenho o estado antigo em um objeto e outro com apenas as alterações do usuário.
Eu imaginei fazer algo como reatachar(é assim que fala?) o bean antigo na session do hibernate, depois atualizaria o bean com as alterações e tentaria salvar, imaginando que o hibernate faria a comparação das alterações com o primeiro bean, permitindo salvar somente os campos alterados.
Eu não sei reatachar!!!
Merge:
Fez o update somente com os campos alterados. O problema é que faz uma query antes e pega os dados que o 1º usuário alterou e sobrescreve o dele.
Update:
Não fez a query, mas passa todos os campos para alteração, quando eu gostaria que fosse somente os alterados.
Lock:
Deu um erro [Row was updated or deleted by another transaction (or unsaved-value mapping was incorrect): [br.com.g3.controleAcesso.model.bean.Usuario#0007]]
O que eu fiz de diferente?
Quando eu faço parse do meu bean antigo, eu nulo as listas que não vieram, pois meu parser deixa a lista empty.
Uso o hibernate 3.3.1 e no meu bean tenho as anotações:
@org.hibernate.annotations.Entity(optimisticLock = OptimisticLockType.DIRTY, dynamicUpdate = true)
O que eu quero é possível?
O que estou fazendo errado?
Há outro modo de fazer isso?