DataNucleus: Como faço para executar ações automaticamente quando cometer uma transação?

StackOverflow https://stackoverflow.com/questions/763792

Pergunta

Considere ter uma aplicação utilizando DataNucleus com a seguinte estrutura persistência:

Você tem uma classe que tem dois atributos, como criado (Data) e lastUpdate (Data): Como você preencher automaticamente esses atributos com os valores apropriados quando um objeto desta classe vai ser cometido? valores apropriados seriam definição de ambos, criado e lastUpdate para a hora atual quando um objeto é inserido no banco de dados e apenas atualizar lastUpdate quando tem alterado.

Foi útil?

Solução

Eu percebi isso me agora.

Você precisa criar uma InstanceLifecycleListener ...

public class BasicEntityLifecycleListener implements StoreLifecycleListener {

    public void postStore(InstanceLifecycleEvent evt) {
    }

    public void preStore(InstanceLifecycleEvent evt) {
        if((PersistenceCapable)evt.getSource() instanceof BasicEntity) {
            BasicEntity obj = (BasicEntity)evt.getSource();
            Date now = new Date();
            if(JDOHelper.isNew(obj))
                obj.setCreated(now);
            obj.setLastUpdate(now);
        }
    }
}

e, em seguida, registrá-lo dentro de você PersistenceManager ...

PersistenceManager pm = pmf.getPersistenceManager();
pm.addInstanceLifecycleListener(new BasicEntityLifecycleListener(), null);

Eu encontrei a solução no DataNucleus Acesso Plaftorm manual que Eu não reconheceram até agora. O manual online parece um pouco complexo para mim.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top