Каков наилучший способ сравнить постоянный или отсоединенный объект спящего режима с его текущим состоянием БД? - PullRequest
3 голосов
/ 19 апреля 2011

Я использую Hibernate и Spring.

Я пишу сервисный метод для сохранения объекта (платы), в котором есть очень специфические бизнес-правила о том, когда его можно сохранять в зависимости от его текущего состояния БД. Например, если charge.status.equals (Status.CANCELED) он не должен обновляться. (Существуют и другие, более конкретные правила, но это должен быть хороший пример для работы.) Возможно, другой код может загрузить отмененный платеж и ошибочно изменить статус на утвержденный, а затем вызвать функцию сохранения (сбор). Метод save должен быть в состоянии идентифицировать эту ошибку независимо от того, был ли переданный заряд постоянным или отсоединенным.

Есть ли простой способ сравнить объект в моей памяти с текущим постоянным состоянием объекта в БД?

1 Ответ

0 голосов
/ 21 апреля 2011

Я думаю, что это сработает:


public void save(Charge charge) {
    Session session = sessionFactory.getCurrentSession();
    Charge copy = new Charge(charge);
    session.refresh(charge);
    ...
    //various business logic checks between copy and charge
    ...
    session.saveOrUpdate(charge);
}

Я, безусловно, был бы признателен за любой совет, если он ошибочен или есть лучший способ.

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