In JavaDoc of Session class the description of delete method is:
Remove a persistent instance from the datastore. The argument may be
Try this...
public T delete(T t) throws Exception { try { t = load(t); session.delete(t); session.flush(); } catch (Exception e) { throw e; } finally { session.clear(); } return t; } public T load(T t) { session.buildLockRequest(LockOptions.NONE).lock(t); return t; }