2012-05-20 4 views
0

Как выполнить метод непосредственно перед сохранением модели?Выполнить метод перед сохранением модели в Play Framework 1.x

Как, например, хеширование паролей в пользовательской модели.

@Before аннотация, судя по всему, не существует для моделей.

Я использую PlayFramework 1.2.x

PS: Я планирую использовать его с модулем CRUD.

+0

Вы ищете обратные вызовы JPA @PrePersist? –

+0

@AhamedMustafaM: Я вроде как, но мне не нужно что-то сложное. Просто выполните метод, а затем сохраните. – Gautam

ответ

4

Ознакомьтесь с коллекцией аннотаций Pre* в JPA. Например, PrePersist и PreUpdate.

В вашей модели просто привяжите требуемую аннотацию к методу, который вы хотите вызвать.

@PrePersist 
public void hashPassword(){ 
    // do stuff 
} 

Другим вариантом может быть to override the save() method для конкретной модели, но я бы не сделать это, если это не совершенно необходимо. Я бы придерживался JPA API, если они предлагают решение, но это только мое мнение.

+0

Спасибо, что работает. – Gautam

+1

На самом деле я провел некоторое исследование после того, как вы упомянули об переопределении 'save()'. Как оказалось, переопределение 'save()' не является такой плохой идеей, потому что она вызывает '_save()', которая содержит фактическую бизнес-логику, см. Http: //stackoverflow.com/a/5419083/492561 – Gautam

+0

Ницца. Я добавлю ссылку на свой ответ для полноты. – Jeremy

Смежные вопросы