Как выполнить собственный запрос memsql с использованием jpa

Насколько мне известно, для взаимодействия с MemSql из java-приложения мы используем тот же коннектор MySql.

В моем приложении мне нужно выполнить запрос к таблице базы данных MemSql. Таблица содержит поле JSON, а запрос основан на некоторых полях внутри JSON.

Вот пример запроса

select  tweet::retweeted_status  from  tweet_json_original  where  posted_time > date_sub(current_date(), interval 1 day);

В моем классе репозитория у меня есть метод, который пытается выполнить предыдущий запрос следующим образом

public List<String> getMissedTweets(){
        Query query = em.createNativeQuery(missedTweetsQuery);
        return query.getResultList();
    }

При выполнении этого метода приложение генерирует следующее исключение

Caused by: org.hibernate.QueryException: Not all named parameters have been set: [:retweeted_status] [tweet::retweeted_status  from  tweet_json_original  where  posted_time > date_sub(current_date(), interval 1 day);]
    at org.hibernate.internal.AbstractQueryImpl.verifyParameters(AbstractQueryImpl.java:391) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
    at org.hibernate.internal.SQLQueryImpl.verifyParameters(SQLQueryImpl.java:179) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
    at org.hibernate.internal.SQLQueryImpl.list(SQLQueryImpl.java:118) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
    at org.hibernate.jpa.internal.QueryImpl.list(QueryImpl.java:606) ~[hibernate-entitymanager-5.0.12.Final.jar:5.0.12.Final]
    at org.hibernate.jpa.internal.QueryImpl.getResultList(QueryImpl.java:483) ~[hibernate-entitymanager-5.0.12.Final.jar:5.0.12.Final]
    ... 29 common frames omitted

Я понимаю, что существует конфликт между тем, как я запрашиваю поля JSON, и тем, как JPA передает параметры в запрос. Причина этой проблемы в том, что обе операции используют символ двоеточия (:).

как я могу решить эту проблему и выполнить предыдущий запрос как есть?

0
0
321
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вам нужно избегать двоеточий, чтобы JPA не рассматривал их как параметры, которые необходимо установить:

select  tweet\\:\\:retweeted_status

Другие вопросы по теме