List of usage examples for org.hibernate.persister.entity EntityPersister isVersioned
boolean isVersioned();
From source file:com.utest.dao.UtestDeleteEventListener.java
License:Apache License
@SuppressWarnings("unchecked") @Override/*from ww w . j av a2s . co m*/ /** * Handle the given delete event. This is the cascaded form. * * @param event The delete event. * @param transientEntities The cache of entities already deleted * * @throws HibernateException */ public void onDelete(DeleteEvent event, Set transientEntities) throws HibernateException { final EventSource source = event.getSession(); final PersistenceContext persistenceContext = source.getPersistenceContext(); Object entity = persistenceContext.unproxyAndReassociate(event.getObject()); EntityEntry entityEntry = persistenceContext.getEntry(entity); final EntityPersister persister = source.getEntityPersister(event.getEntityName(), entity); final Object version; if (persister.isVersioned()) { version = persister.getVersion(entity, source.getEntityMode()); // Make sure version has not changed on deleted entities if ((entity instanceof TimelineEntity) && !((TimelineEntity) entity).isNew()) { if (!persister.getVersionType().isEqual(version, entityEntry.getVersion())) { throw new StaleObjectStateException(persister.getEntityName(), entityEntry.getId()); } } } super.onDelete(event, transientEntities); }
From source file:com.utest.dao.UtestFlushEntityEventListener.java
License:Apache License
@Override public void onFlushEntity(final FlushEntityEvent event) throws HibernateException { final Object object = event.getEntity(); final EntityEntry entry = event.getEntityEntry(); final EntityPersister persister = entry.getPersister(); // final Status status = entry.getStatus(); final SessionImplementor session = event.getSession(); if (persister.isVersioned()) { final Object version = persister.getVersion(object, session.getEntityMode()); // Make sure version has not changed on updated entities if ((object instanceof TimelineEntity) && !((TimelineEntity) object).isNew()) { if (!persister.getVersionType().isEqual(version, entry.getVersion())) { throw new StaleObjectStateException(persister.getEntityName(), entry.getId()); }/* ww w . j av a 2s . c o m*/ } } super.onFlushEntity(event); }
From source file:fr.keyconsulting.oliphant.NotifyListener.java
License:Open Source License
public Serializable processLoadEvent(PostLoadEvent event, boolean throwStaleException) throws StaleObjectStateException { if (sessionFactory == null) { // our first event, initialize the listener sessionFactory = (SessionFactoryImplementor) event.getSession().getSessionFactory(); specificNotifyListener.setUp();/*from w w w . jav a 2 s.c o m*/ } Object object = event.getEntity(); EventSource session = event.getSession(); EntityPersister persister = event.getPersister(); String uid = getUid(object, session); if (persister.isVersioned()) { if (!versions.containsKey(uid)) { // We have not yet received notifications for this object versions.put(uid, Base64 .encodeBytes(persister.getVersion(object, session.getEntityMode()).toString().getBytes())); } } return true; }
From source file:fr.keyconsulting.oliphant.NotifyListener.java
License:Open Source License
public boolean isKnownToBeStaleInL2(Object object, EventSource session) { final EntityPersister persister = sessionFactory.getEntityPersister(session.getEntityName(object)); String uid = getUid(object, session); if (!versions.containsKey(uid)) { return false; }//from w w w . ja v a 2 s .co m if (persister.isVersioned()) { if (persister.hasCache() && session.getCacheMode().isGetEnabled()) { final EntityRegionAccessStrategy cacheAccessStrategy = persister.getCacheAccessStrategy(); if (cacheAccessStrategy == null) { return false; } final CacheKey ck = new CacheKey(session.getIdentifier(object), persister.getIdentifierType(), persister.getRootEntityName(), session.getEntityMode(), session.getFactory()); CacheEntry cachedObject = (CacheEntry) cacheAccessStrategy.get(ck, Long.MAX_VALUE); if (cachedObject == null) { return false; } if (Base64.encodeBytes(cachedObject.getDisassembledState()[persister.getVersionProperty()] .toString().getBytes()) != versions.get(uid)) { return true; } } } return false; }
From source file:fr.keyconsulting.oliphant.NotifyListener.java
License:Open Source License
public void evictFromL2(Object object, EventSource session) { final EntityPersister persister = sessionFactory.getEntityPersister(session.getEntityName(object)); if (persister.isVersioned()) { if (persister.hasCache() && session.getCacheMode().isGetEnabled()) { final EntityRegionAccessStrategy cacheAccessStrategy = persister.getCacheAccessStrategy(); if (cacheAccessStrategy == null) { return; }//from w ww. j a v a 2 s .c om final CacheKey ck = new CacheKey(session.getIdentifier(object), persister.getIdentifierType(), persister.getRootEntityName(), session.getEntityMode(), session.getFactory()); cacheAccessStrategy.evict(ck); Serializable identifier = session.getIdentifier(object); LOG.debug("* Object " + identifier + " evicted from L2"); } } }
From source file:org.tonguetied.audit.AbstractAuditLogEventListener.java
License:Apache License
/** * Determine if this field is used for optimistic locking. * /*from w w w. jav a 2 s . co m*/ * @param persister * @param name * @return <code>true</code> if the field is used for optimistic locking, * <code>false</code> otherwise */ private boolean isOptlockField(EntityPersister persister, final String name) { return persister.isVersioned() && "version".equals(name); }