@Override protected void onPersistenceEvent(final AbstractPersistenceEvent event) { if (event instanceof PreInsertEvent) { beforeInsert(event.getEntity(), event.getEntityAccess()); } else if (event instanceof PreUpdateEvent) { beforeUpdate(event.getEntity(), event.getEntityAccess()); } }
public boolean beforeInsert(PersistentEntity entity, EntityAccess e) { return doValidate(entity, e.getEntity()); }
private boolean doValidate(PersistentEntity entity, Object o) { Validator v = datastore.getMappingContext().getEntityValidator(entity); if (v == null) { return true; } Session currentSession = datastore.getCurrentSession(); FlushModeType flushMode = currentSession.getFlushMode(); try { currentSession.setFlushMode(FlushModeType.COMMIT); Errors result = new ValidationErrors(o); v.validate(o, result); if (result.hasErrors()) { onErrors(o, result); return false; } return true; } finally { currentSession.setFlushMode(flushMode); } }
public boolean beforeUpdate(PersistentEntity entity, EntityAccess e) { return doValidate(entity, e.getEntity()); }