When you execute a DML query like this, the session cache, the cascades and the version checks are completely bypassed. The query is directly translated into a SQL query and executed as is. So it's your responsibility to delete (or modify) the dependant entities first. If you want the cascade to apply, you need to use the Hibernate API:
List<CorrelationKey> allKeys = session.createQuery("select k from CorrelationKey k").list();
for (CorrelationKey key : allKeys) {
session.delete(key);
}