DataNucleus: Как автоматически выполнять действия при совершении транзакции? - PullRequest
2 голосов
/ 18 апреля 2009

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

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

1 Ответ

3 голосов
/ 18 апреля 2009

Я сам понял это сейчас.

Вам необходимо создать 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);
        }
    }
}

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...