0
respostas

org.hibernate.HibernateException: Unknown entity: null - Não reconhece um alias do criteria dentro de um subcriteria

insira seu código aqui

Eu estou tentando fazer essa query aqui usando as ferramentas do hibernate:

SELECT c.CMDALCCODG, c.CCREDECODG, c.DCREDEDTCR, c.DCREDEDTCN, c.CTPTXIORIG, c.CTPTXITIPO,c.XCREDEOBSE
FROM   SCTR.TBCREDENCIALCTTU c, SCTR.TBCREDENCIALXVEICULO cv1
WHERE  c.CMDALCCODG  = cv1.CMDALCCODG AND
       c.CCREDECODG  = cv1.CCREDECODG AND
       cv1.CMDALCCODG  = 2 AND
       c.DCREDEDTCN IS NULL AND
       NOT EXISTS (SELECT cv2.AVECLOSEQU 
                   FROM SCTR.TBCREDENCIALXVEICULO  cv2
                   WHERE cv2.DCREVCDTFV IS NULL AND
                         cv2.CMDALCCODG  = 2 AND
                         cv2.CCREDECODG = cv1.CCREDECODG)
ORDER BY 2

Esse daqui é o código atual no hibernate

criteria.createAlias("veiculosCredencial", "veiculoCredencialAlias");

            criteria.add(Restrictions.isNull("cancelamentoCredencial"));
            DetachedCriteria subcriteria = DetachedCriteria.forClass(CredencialXVeiculo.class, "cv");
            subcriteria.add(Restrictions.eq("cv.credencialXVeiculoPK.credencialCttuPK.modal", filtro.getModalEquals()));
            subcriteria.add(Restrictions.isNull("cv.fimVinculo"));
            subcriteria.add(Property.forName("cv.credencialXVeiculoPK.CredencialCttuPK.id").eqProperty("veiculoCredencialAlias.credencialAlias.credencialXVeiculoPK.CredencialCttuPK.id") );
            subcriteria.setProjection(Projections.property("cv.credencialXVeiculoPK.credencialCttuPK"));
            criteria.add(Subqueries.notExists(subcriteria));

Entretanto, aparece a seguinte exceção:

org.hibernate.HibernateException: Unknown entity: null - Does not recognize criteria alias within subcriteria

Percebi que o a única falha que não permite traduzir a query original para o hibernate é a linha:

subcriteria.add(Property.forName("cv.credencialXVeiculoPK.CredencialCttuPK.id").eqProperty("veiculoCredencialAlias.credencialAlias.credencialXVeiculoPK.CredencialCttuPK.id") );

Parece que, dessa forma, o subcriteria não consegue "entender" o alias que foi criado dentro do criteria. Esse passo é fundamental, pois ele represantaria o trecho " cv2.CCREDECODG = cv1.CCREDECODG"

Alguém faz ideia de como eu faço isso corretamente no Hibernate?

Já procurei em vários locais, mas sem sucesso.

Agradeço desde já.