Recuperación de objetos polimórficos de hibernación utilizando una consulta de criterios

En mi modelo tengo una clase abstracta de "Usuario" y varias subclases como Solicitante, HiringManager y Entrevistador. Están en una sola tabla, y tengo un único DAO para administrarlos a todos.

Usuario:

@Entity
@Table(name="User")
@Inheritance(strategy=InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(
    name="role",
    discriminatorType=DiscriminatorType.STRING
)
public abstract class User extends BaseObject implements Identifiable<Long> ...

HiringManager (por ejemplo):

@Entity
@DiscriminatorValue("HIRING_MANAGER")
public class HiringManager extends User ...

Ahora, si quisiera, por ejemplo, obtener todos los gerentes de contratación que no están asociados con un departamento, ¿cómo lo haría? Me imagino que se vería algo así como:

DetachedCriteria c = DetachedCriteria.forClass(User.class);
c.add(Restrictions.eq("role", "HIRING_MANAGER"));
c.add(Restrictions.isNull("department"));
List<User> results = getHibernateTemplate().findByCriteria(c);

Pero cuando ejecuto esto, Hibernate se queja "no pudo resolver la propiedad: rol" (lo que en realidad tiene sentido porque la clase Usuario realmente no tiene una propiedad explícita de rol)
Entonces, ¿cuál es la forma correcta de hacer lo que estoy tratando de hacer?

Respuestas a la pregunta(2)

Su respuesta a la pregunta