Ядро данных:Как мне автоматически выполнять действия при совершении транзакции?

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

Вопрос

Рассмотрите возможность создания приложения, использующего DataNucleus со следующей структурой сохранения:

У вас есть класс, который имеет два атрибута, таких как созданный (Дата) и Последняя дата (Дата):Как вы автоматически заполняете эти атрибуты соответствующими значениями, когда объект этого класса будет зафиксирован?Соответствующими значениями были бы установка обоих, созданный и Последняя дата к текущему времени, когда объект вставлен в базу данных и просто обновляется Последняя дата когда это изменится.

Это было полезно?

Решение

Теперь я сам это понял.

Вам нужно создать ИнстансеЛифециклеЛистенер...

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);
        }
    }
}

а затем зарегистрируйте его в вашем PersistenceManager...

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

Я нашел решение в Руководство пользователя DataNucleus Access Plaftorm который я не осознавал до сих пор.Онлайн-руководство кажется мне немного сложным.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top