As we discussed before, the stores do not consider the hierarchy when querying due to performance issues.

If you want to support the Agent type too you can just provide a similar logic. When no SalesAgent exists you fallback to a query using the Agent as the querying type.

I did this way because I thought your users would be always SalesAgent instances.