Mapeamento de views no Hibernate

Como faço o mapeamento de uma view no hibernate?

obs - usando XDoclet

Eu acho q o hibernate ñ faz diferença entre uma view e uma tabela.
E quanto aos mapeamentos, se vc puder optar por ñ usá-los.
Com Annotations ñ precisa de xml, dá uma olhada nesse artigo, é bacana

http://www.developer.com/java/ent/article.php/3577101

Para o Hibernate não faz diferença se é uma tabela ou uma view.

Eu tinha lido aqui na net mesmo que não fazia diferença, mas o q tá ocorrendo é o seguinte:
antes de “virar” View, isso era uma tabela normal (q tinhamos feito p/ testes). Quando era uma tabela, eu fazia a seguinte consulta e me retornava o resultado beleza.

Query sq = s.createQuery("from br.inf.portalfiscal.nfe.model.util.ContribuinteVO c where c.cnpjNucleo = :nucleo_cnpj and c.cnpjFilial = :filial_cnpj and c.cnpjDV = :dv_cnpj");
sq.setParameter("nucleo_cnpj",nucleo);
sq.setParameter("filial_cnpj",filial);
sq.setParameter("dv_cnpj",dv);
ContribuinteVO contribuinte = (ContribuinteVO) sq.uniqueResult();

depois q mudamos p/ view, quando faço a mesma consulta, não me retorna nada, mas se faço uma consulta usando SQL e nao HQL (como a seguir), ele me retorna resultado, mas dá um erro de ClassCastException, dizendo que não dá p/ fazer o cast de Object p/ meu VO:

Query sq = s.createSQLQuery(
"SELECT * FROM CONTRIBUINTE WHERE CNPJ_NUCLEO = " +nucleo+" AND CNPJ_FILIAL = "+filial+" AND CNPJ_DV = "+dv);
ContribuinteVO contribuinte = (ContribuinteVO) sq.uniqueResult();

Quando fiz o debug, vi q ele me retorna um Object, mas com os valores todos “soltos”, apenas dizendo o tipo deles (Timestamp, String, etc…), e não o nome dos atributos, faznedo com que não consiga efetuar o cast.

Alguém saberia me dar alguma solução? :]

Meu hbm:

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE hibernate-mapping PUBLIC
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping
>
    <class
        name="br.inf.portalfiscal.nfe.model.util.ContribuinteVO"
        table="CONTRIBUINTE"
    >

        <id
            name="identificador"
            column="IDENTIFICADOR"
            type="long"
            unsaved-value="null"
        >
            <generator class="native">
                <param name="sequence">SQ_CONTRIBUINTE</param>
              <!--  
                  To add non XDoclet generator parameters, create a file named 
                  hibernate-generator-params-ContribuinteVO.xml 
                  containing the additional parameters and place it in your merge dir. 
              --> 
            </generator>
        </id>

        <property
            name="cnpjDV"
            type="java.lang.String"
            update="true"
            insert="true"
            column="CNPJ_DV"
            not-null="false"
            unique="false"
        />

        <property
            name="cnpjFilial"
            type="java.lang.String"
            update="true"
            insert="true"
            column="CNPJ_FILIAL"
            not-null="false"
            unique="false"
        />

        <property
            name="cnpjNucleo"
            type="java.lang.String"
            update="true"
            insert="true"
            column="CNPJ_NUCLEO"
            not-null="false"
            unique="false"
        />

        <property
            name="dataFimParalizacao"
            type="java.util.Date"
            update="true"
            insert="true"
            column="DATA_FIM_PARALISACAO"
            not-null="false"
            unique="false"
        />

        <property
            name="dataInicioAtividade"
            type="java.util.Date"
            update="true"
            insert="true"
            column="DATA_INICIO_ATIVIDADE"
            not-null="false"
            unique="false"
        />

        <property
            name="dataInicioInscricao"
            type="java.util.Date"
            update="true"
            insert="true"
            column="DATA_INICIO_INSCRICAO"
            not-null="false"
            unique="false"
        />

        <property
            name="dataIntimadoCancelamento"
            type="java.util.Date"
            update="true"
            insert="true"
            column="DATA_INTIMADO_CANCELAMENTO"
            not-null="false"
            unique="false"
        />

        <property
            name="dataSituacao"
            type="java.util.Date"
            update="true"
            insert="true"
            column="DATA_SITUACAO"
            not-null="false"
            unique="false"
        />

        <property
            name="idEstruturaOrganizacionalCircunscricao"
            type="java.lang.Integer"
            update="true"
            insert="true"
            column="ID_ESTRUTURA_CIRCUNSCRICAO"
            not-null="false"
            unique="false"
        />

        <property
            name="idSituacaoContribuinte"
            type="java.lang.Integer"
            update="true"
            insert="true"
            column="ID_SITUACAO"
            not-null="false"
            unique="false"
        />

        <property
            name="idSituacaoEspecial"
            type="java.lang.Integer"
            update="true"
            insert="true"
            column="ID_SITUACAO_ESPECIAL"
            not-null="false"
            unique="false"
        />

        <property
            name="idSituacaoUsoECF"
            type="java.lang.Integer"
            update="true"
            insert="true"
            column="ID_SITUACAO_USO_ECF"
            not-null="false"
            unique="false"
        />

        <property
            name="ieEstadoOrigem"
            type="java.lang.String"
            update="true"
            insert="true"
            column="IE_ESTADO_ORIGEM"
            not-null="false"
            unique="false"
        />

        <property
            name="inscricaoEstadualDV"
            type="java.lang.String"
            update="true"
            insert="true"
            column="IE_DV"
            not-null="false"
            unique="false"
        />

        <property
            name="inscricaoEstadualFilial"
            type="java.lang.String"
            update="true"
            insert="true"
            column="IE_FILIAL"
            not-null="false"
            unique="false"
        />

        <property
            name="inscricaoEstadualMatrizDV"
            type="java.lang.String"
            update="true"
            insert="true"
            column="MATRIZ_IE_DV"
            not-null="false"
            unique="false"
        />

        <property
            name="inscricaoEstadualMatrizFilial"
            type="java.lang.String"
            update="true"
            insert="true"
            column="MATRIZ_IE_FILIAL"
            not-null="false"
            unique="false"
        />

        <property
            name="inscricaoEstadualMatrizNucleo"
            type="java.lang.String"
            update="true"
            insert="true"
            column="MATRIZ_IE_NUCLEO"
            not-null="false"
            unique="false"
        />

        <property
            name="inscricaoEstadualNucleo"
            type="java.lang.String"
            update="true"
            insert="true"
            column="IE_NUCLEO"
            not-null="false"
            unique="false"
        />

        <property
            name="inscricaoUnica"
            type="java.lang.Boolean"
            update="true"
            insert="true"
            column="INSCRICAO_UNICA"
            not-null="false"
            unique="false"
        />

        <property
            name="localizacao"
            type="java.lang.Boolean"
            update="true"
            insert="true"
            column="LOCALIZACAO"
            not-null="false"
            unique="false"
        />

        <property
            name="nomeEmpresarial"
            type="java.lang.String"
            update="true"
            insert="true"
            column="NOME_EMPRESARIAL"
            not-null="false"
            unique="false"
        />

        <property
            name="nomeFantasia"
            type="java.lang.String"
            update="true"
            insert="true"
            column="NOME_FANTASIA"
            not-null="false"
            unique="false"
        />

        <property
            name="processoDataFim"
            type="java.util.Date"
            update="true"
            insert="true"
            column="PROCESSO_DATA_FIM"
            not-null="false"
            unique="false"
        />

        <property
            name="processoDataInicio"
            type="java.util.Date"
            update="true"
            insert="true"
            column="PROCESSO_DATA_INICIO"
            not-null="false"
            unique="false"
        />

        <property
            name="processoNumero"
            type="java.lang.String"
            update="true"
            insert="true"
            column="PROCESSO_NUMERO"
            not-null="false"
            unique="false"
        />

        <!--
            To add non XDoclet property mappings, create a file named
                hibernate-properties-ContribuinteVO.xml
            containing the additional properties and place it in your merge dir.
        -->

    </class>

</hibernate-mapping>