Join com Hibernate e tabelas sem relacionamento direto

Estou implementando um sistema que contém a seguinte relacionamento entre classes:

1- Um Usuario está associado a uma e somente uma Pessoa
2- Um Administrador está associado a uma e somente uma Pessoa
3- Um Cliente está relaciondo a uma e somente uma Pessoa

Nesse mesmo sistema tenho um requisito para implementação de uma listagem de usuários: Somente listar, ordenando pelo documento, usuários que são administradores.

Bem, escrevi o comando SQL para essa consulta e ficou assim:

SELECT U.*
  FROM USUARIO U
  JOIN PESSOA P ON P.ID = U.PESSOA
  JOIN ADMINISTRADOR A ON A.PESSOA = P.ID
 ORDER BY P.DOCUMENTO

O comando SQL acima é o comando ANSI, como faço pra implementar essa consulta usando Hibernate, uma fez que o relacionamento da classe Usuario é com Pessoa e não com Administrador.

Agradeço qualquer ajuda. Estou colocando em anexo o diagrama


Entendo, do teu diagrama, que pessoa possui usuário e possui administrador, isso?
Meio estranho.
Bom, se eu quisesse os usuários de uma pessoa, faria

"SELECT p.usuario u FROM Pessoa p".

Isso criaria um SQL mais ou menos assim:

SELECT *
FROM Usuario u
JOIN Pessoa p
ON p.id = u.id

A partir daí você tem a base que necessita.

Infelizmente drsmachado, a sua explicação não resolve meu problema…

Vou tentar explicar como funciona…

O sistema será dividido em 2 partes. Uma área administrativa e uma área para clientes.
A Pessoa pode ser tanto cliente quanto administrador.

Para efetuar o login na área de cliente, o usuário tem que estar associado a uma pessoa que é cliente e para logar na área administrativa, o usuário tem que estar associado a uma pessoa que é administrador.

O sistema tem que aplicar essa regra para especificar qual usuário pode acessar uma determinada área.

Atualmente eu estou implementando o login para a área administrativa, portando somente pessoas que estejam vinculadas a um administrador podem logar.

Dê uma pesquisada em:
@MappedSuperclass
@Inheritance(strategy=InheritanceType.TABLE_PER_CLASS)