Hibernate Named Query - junte-se a 3 tabelas

Tenho 3 beans: Organização, Função, Usuário

Role - Relação de organização - @ ManyToOne

Role - Relação de usuário - @ ManyToMany

Organização

    @Entity
    @Table(name = "entity_organization")
    public class Organization implements Serializable {

        private static final long serialVersionUID = -646783073824774092L;

        @Id
        @GeneratedValue(strategy = GenerationType.TABLE)
        Long id;

        String name;

        @OneToMany(targetEntity = Role.class, mappedBy = "organization")
        List<Role> roleList;

...

Função

    @Entity
    @Table(name = "entity_role")
    public class Role implements Serializable {

        private static final long serialVersionUID = -8468851370626652688L;

        @Id
        @GeneratedValue(strategy = GenerationType.TABLE)
        Long id;

        String name;

        String description;

        @ManyToOne
        Organization organization;

...

Do utilizador

    @Entity
    @Table(name = "entity_user")
    public class User implements Serializable {

        private static final long serialVersionUID = -4353850485035153638L;

        @Id
        @GeneratedValue(strategy = GenerationType.TABLE)
        Long id;
        @ManyToMany
        @JoinTable(name = "entity_user_role",
                joinColumns = @JoinColumn(name = "user_id", referencedColumnName = "id"),
                inverseJoinColumns = @JoinColumn(name = "role_id", referencedColumnName =                     "id"))
        List<Role> roleList;

...

Então, preciso obter todas as organizações para o usuário especificado (primeiro, preciso selecionar todas as funções de usuário e depois selecionar todas as organizações que possuem essa função)

Tenho uma instrução sql que realiza essa lógica (por exemplo, escolho o usuário com id = 1):

SELECT * FROM entity_organization AS o 
INNER JOIN entity_role r ON r.organization_id = o.id 
INNER JOIN entity_user_role ur ON ur.role_id=r.id 
WHERE ur.user_id = 1

Como posso implementar isso, usando o mecanismo de consulta nomeado de hibernação? Obrigado

questionAnswers(2)

yourAnswerToTheQuestion