Ошибка внутреннего соединения MySQL: во время выполнения запроса было обнаружено, что он равен нулю. Первичные ключи не должны содержать ноль - PullRequest
0 голосов
/ 11 мая 2019

Я хочу сопоставить конкретные столбцы в двух таблицах и получить обратно совпадающие значения на основе временных отметок, то есть событий, которые произошли одновременно, но записаны в двух отдельных таблицах. Я использую MYSQL INNER JOINS, как показано ниже:

Пока мой запрос выглядит так:

   String threatQueryJoin = "SELECT awsevents.ALERT.resourceName, awsevents.RECORD.Record_Id,awsevents.RECORD.resourceName, "
            + "awsevents.ALERT.alert_id FROM awsevents.ALERT inner join awsevents.RECORD on awsevents.ALERT.resourceName "
            + "= awsevents.RECORD.resourceName where (awsevents.ALERT.timeStamp >= '2019-05-10' AND awsevents.RECORD.timeStamp >= '2019-05-10') "
            + "AND (awsevents.ALERT.resourceName='company-checker-log-963f5e78-0dea-46f1-9a48-5a116bdae350' "
            + "AND awsevents.RECORD.resourceName='company-checker-log-963f5e78-0dea-46f1-9a48-5a116bdae350') order by awsevents.RECORD.timeStamp";
    Query q = AWSEventsDAO.em.createNativeQuery(threatQueryJoin);

List ll = q.getResultList();

Ответ на запрос в MySQL workbench выглядит хорошо:

table inner join resuktset

Однако я хочу записать результаты в другую таблицу. Поскольку я не владею MySQL, я буду рад узнать, есть ли лучший способ для обработки таких запросов. Используя inner join, у меня появляется следующая ошибка:

Exception Description: The primary key read from the row [ArrayRecord(
 => company-checker-log-963f5e78-0dea-46f1-9a48-5a116bdae350
 => 45167
 => company-checker-log-963f5e78-0dea-46f1-9a48-5a116bdae350
 => 8108)] during the execution of the query was detected to be null.  Primary keys must not contain null.

1 Ответ

0 голосов
/ 13 мая 2019

Я решил эту проблему, удалив mapped class, т.е. Record.class и использовав

Object[] alert = threatList.get(i);

, как показано в этих руководствах , jpa и native querries. Оказывается, что EntityManager возвращает список объектов [], которые должны быть обработаны впоследствии.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...