Trigger com Hibernate ... Gatilho no Hibernate [RESOLVIDO]
11 respostas
L
Lavieri
Como criar gatilhos no hibernate ?? a muito tempo atraz, navegando pelas classes do hibernate… vi que ele não salva diretamente os dados… que da um fire para os ouvintes e um dos ouvintes que salva os dados… é possivel então usar o recurso de triggers diretamente pelo hibernate ?? sem ter que escrevelas em um banco de dados ??
Vc pode usar o conceito de EventListeners. Dá uma olhada no pacote org.hibernate.event
L
Lavieri
apenas para exemplificar um dos Cases é esse abaixo, onde eu preciso construir a lista de produtos para lojas, e uma tabela de estoque, sempre que eu adcionar 1 produto, ou adcionar 1 loja … queria fazer isso sem as Trigger do banco de dados… mas sim direatmente com códigos java
L
Lavieri
1 duvida… onde eu injeto os Listners ?? na session ?? no sessionFactory ?? onde??
caso seja no Session, tenho que fazelo para cada sessão criada ?? …
não achei os lugares para addOnDeleteListners… etc etc etc
L
Lavieri
procurei muito e so achei como fazer Interceptor… alguem sabe como fazer para adcionar um PreInsertEventListener por exemplo ??
vlw ^^ ... mais me diz 1 coisa... tem como eu adcionar um Listner so em uma classe ?? tipo com anotações ?? vi algo assim
@Entity@EntityListeners(class=Audit.class)publicclassCat{@IdprivateIntegerid;privateStringname;privateCalendardateOfBirth;@Transientprivateintage;privateDatelastUpdate;//getters and setters/** * Set my transient property at load time based on a calculation, * note that a native Hibernate formula mapping is better for this purpose. */@PostLoadpublicvoidcalculateAge(){Calendarbirth=newGregorianCalendar();birth.setTime(dateOfBirth);Calendarnow=newGregorianCalendar();now.setTime(newDate());intadjust=0;if(now.get(Calendar.DAY_OF_YEAR)-birth.get(Calendar.DAY_OF_YEAR)<0){adjust=-1;}age=now.get(Calendar.YEAR)-birth.get(Calendar.YEAR)+adjust;}}publicclassLastUpdateListener{/** * automatic property set before any database persistence */@PreUpdate@PrePersistpublicvoidsetLastUpdate(Cato){o.setLastUpdate(newDate());}}