28 Mayıs 2018 Pazartesi

JPA @PostUpdate Anotasyonu

Giriş
Tanımı şöyledir.
@Target(value=METHOD)
@Retention(value=RUNTIME)
public @interface PostUpdate
@PrePersist,@PreRemove,@PostPersist,@PostRemove,@PreUpdate,@PostUpdate,@PostLoad anotasyonlarına da bakılabilir.

EntityManager.persist() çağrısı ile tetiklenir.

Örnek
Şöyle yaparız.
public class ArticleLocaliseEntityListener {
  @PostUpdate
  @PostPersist
  private void checkQuantite(ArticleBean article) throws BusinessException {
    if (article.getQuantiteStock() < 0) {
        throw new BusinessException(exceptionMsg);
    }
}
Eğer exception fırlatılırsa yakalamak için şöyle yaparız.
try {
    em.persist(entity);
} catch (RuntimeException e) {
    if (e.getCause() instanceof BusinessException) {
        // Fix the problem the way you want
    } else {
        throw e;
    }
}

Hiç yorum yok:

Yorum Gönder