package pl.edu.icm.saos.persistence.common;
import java.util.Map;
import org.hibernate.HibernateException;
import org.hibernate.event.spi.PersistEvent;
import org.hibernate.event.spi.PersistEventListener;
/**
* Hibernate persist listener detecting attempts to persist generated entities.
*
* @author madryk
*/
public class GeneratedPersistEventListener implements PersistEventListener {
private static final long serialVersionUID = 1L;
//------------------------ LOGIC --------------------------
@Override
public void onPersist(PersistEvent event) throws HibernateException {
Object originalEntity = event.getObject();
if (originalEntity instanceof Generatable && ((Generatable)originalEntity).isGenerated()) {
throw new GeneratedEntityPersistException(originalEntity);
}
}
@Override
public void onPersist(PersistEvent event, @SuppressWarnings("rawtypes") Map createdAlready) throws HibernateException {
Object originalEntity = event.getObject();
if (originalEntity instanceof Generatable && ((Generatable)originalEntity).isGenerated()) {
throw new GeneratedEntityPersistException(originalEntity);
}
}
}