нативный запрос SELECT для нескольких таблиц спящего и оракулов - PullRequest
0 голосов
/ 25 августа 2018

У меня есть SQL-запрос для получения двух таблиц SELECT.
Я хочу получить две таблицы в качестве сущности в результате.
эти таблицы имеют одинаковое имя столбца (id, версия).
У меня есть следующий код:

String sql = "select sepTemp.*,pspTerm.* " +
            "from SEPTRANSACTIONTEMP sepTemp " +
            "LEFT JOIN PSP_Terminal pspTerm ON (pspTerm.idInPSP=sepTemp.termid AND pspTerm.pspID=:pspID) " +
            "where NOT EXISTS " +
            "(select * from PSPTRANSACTION pspTrans where pspTrans.PSPID=:pspID AND pspTrans.termNo=sepTemp.rrn) ";

    List<Object[]> sepTransactionTemps = em.createNativeQuery(sql)
            .setParameter("pspID", PSPTypes.SEP.getType())
            .getResultList();

 sepTransactionTemps.forEach(row -> {
                SEPTransactionTemp sepTransactionTemp = ((SEPTransactionTemp) row[0]);
                PSPTerminal sepTransactionTemp = ((PSPTerminal) row[1]);
...

, но выдается следующее исключение:

org.hibernate.loader.custom.NonUniqueDiscoveredSqlAliasException: Encountered a duplicated sql alias [ID] during auto-discovery of a native-sql query

1 Ответ

0 голосов
/ 25 августа 2018

идентификатор столбца существует в ваших таблицах (SEPTRANSACTIONTEMP, LEFT JOIN PSP_Terminal)
создать псевдоним для столбца id в вашем запросе выбора

    String sql = "select " + 
            "sepTemp.id as sepTemp_id, " + 
            "sepTemp.version as sepTemp_version, " +
            "pspTerm.id as pspTerm_id, " + 
            "pspTerm.version as pspTerm_version " // try here add all your column names 
        + " from SEPTRANSACTIONTEMP sepTemp LEFT JOIN PSP_Terminal pspTerm "
        + "ON (pspTerm.idInPSP=sepTemp.termid AND pspTerm.pspID=:pspID) " + "where NOT EXISTS "
        + "(select * from PSPTRANSACTION pspTrans where pspTrans.PSPID=:pspID AND pspTrans.termNo=sepTemp.rrn) ";


List<Object[]> sepTransactionTemps = em.createNativeQuery(sql).setParameter("pspID", PSPTypes.SEP.getType())
        .getResultList();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...