Giriş
Tanımı şöyledir.
EntityManager.persist() çağrısı ile tetiklenir.
Örnek
Şöyle yaparız.
Tanımı şöyledir.
@Target(value=METHOD)
@Retention(value=RUNTIME)
public @interface PostUpdate
Açıklaması şöyle. Bu metod içinde kendi entity nesnesi hariç diğer nesnelere dokunmamalı deniliyor.@PrePersist,@PreRemove,@PostPersist,@PostRemove,@PreUpdate,@PostUpdate,@PostLoad anotasyonlarına da bakılabilir.In general, the lifecycle method of a portable application should not invoke EntityMan ager or query operations, access other entity instances, or modify relationships within the same persistence context[46].[47] A lifecycle callback method may modify the non-relationship state of the entity on which it is invoked.[46] Note that this caution applies also to the actions of objects that might be injected into an entity listener.[47] The semantics of such operations may be standardized in a future release of this specification.
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