@Override @SuppressWarnings("unchecked") public boolean equals(Object obj) { boolean isSampeType = (obj != null) && getClass().equals(obj.getClass()); if (isSampeType) { HibernateEntity<TId> entity = (HibernateEntity<TId>) obj; return hasSameNonDefaultIdAs(entity) || ((!isPersisted() || !entity.isPersisted()) && hasSameBusinessSignature(entity)); } return false; }