Custom hashCode that matches the equals implementation (must exclude the same fields that equals ignores: createdAt, updatedAt, role, accessRole)