Forçar conjunto de resultados com NamedNativeQuery e Loader?

Olá pessoal, blz? Seguinte, tenho uma entidade mapeada com o @NamedNativeQuery e um @Loader para a mesma. Até aí tudo bem mas, eu preciso que todos as consultas feitas com esta entidade sejam feitas em cima do resultado da query que defini em @NamedNativeQuery, inclusive nos Joins. Um exemplo:

Tenho a classe Usuario:

@Entity
@Table(name = "TBL_USUARIO")
public class Usuario implements Serializable {

    /**
     *
     */
    private static final long serialVersionUID = 6614900362487520714L;

    @Column(name = "NOME")
    private String nome;
    @Id
    @Column(name = "MATRICULA", nullable = false)
    private long matricula;

    @ManyToMany(fetch = FetchType.LAZY)
    @JoinTable(name = "TBL_USUARIO_PERFIL", joinColumns = {@JoinColumn(name = "USUARIO_MATRICULA"}, inverseJoinColumns = {@JoinColumn(name = "PERFIL_CODIGO")})    
    private List<Perfil> perfis;

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public long getMatricula() {
        return matricula;
    }

    public void setMatricula(long matricula) {
        this.matricula = matricula;
    }

    @Override
    public String toString() {
        return nome;
    }

    public List<Perfil> getPerfis() {
        return Collections.unmodifiableList(perfis);
    }

    public void setPerfis(List<Perfil> perfis) {
        this.perfis = perfis;
    }

    public void addPerfil(Perfil perfil) {
        if (perfis == null) {
            perfis = new LinkedList<Perfil>();
        }

        perfis.add(perfil);
    }
}

que tem um relacionamento N->N com a classe Perfil:

@Entity
@Table(name = "TBL_PERFIL")
@NamedNativeQuery(name = "perfil_sgl", query = "SELECT CODIGO, SISTEMA_SIGLA, DESCRICAO FROM TBL_PERFIL WHERE SISTEMA_SIGLA = 'SGL' ORDER BY CODIGO", resultClass = Perfil.class)
@Loader(namedQuery = "perfil_sgl")
public class Perfil implements Serializable {

    @Id
    @Column(name = "CODIGO")
    private int codigo;

    @Column(name = "SISTEMA_SIGLA")
    private String siglaSistema;

    @Column(name = "DESCRICAO")
    private String descricao;

    public int getCodigo() {
        return codigo;
    }

    public void setCodigo(int codigo) {
        this.codigo = codigo;
    }

    public String getSiglaSistema() {
        return siglaSistema;
    }

    public String getDescricao() {
        return descricao;
    }

    public void setDescricao(String descricao) {
        this.descricao = descricao;
    }
}

Realizado pela tabela USUARIO_PERFIL como pode ser visto na classe Usuario. O problema é que quando mando trazer os perfis de usuário, ele me traz todos os perfis e não só o perfis do sistema da sigla ‘SGL’, como especificado na query ‘perfil_sgl’. Não sei se entenderam mas, quero saber se tem como esse mapeamento funcionar com uma View, que já possui resultados filtrados (no caso, trazendo só os perfis cuja a sigla do sistema é ‘SGL’) antes de qualquer coisa. Ou vou ter que preencher esse relacionamento ‘na mão’(realizando uma consulta) mesmo. Valeu!

obs.: Usei um exemplo hipotético mas, estou mapeando umas tabelas de sistemas ‘legados’ esse lance da sigla existe mesmo. :frowning:

Paz e bem!

Ninguém?! :roll:

Paz e bem!