如何使用jpa执行本机memsql查询

0h4hbjxa  于 2021-06-18  发布在  Mysql
关注(0)|答案(1)|浏览(454)

这个问题在这里已经有答案了

在jpa查询中转义冒号“:”(3个答案)
两年前关门了。
据我所知,要从java应用程序与memsql交互,我们使用相同的mysql连接器。
在我的应用程序中,我需要对memsql数据库表执行一个查询。该表包含一个json字段,查询基于json中的一些字段。
下面是一个示例查询

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

在我的repository类中,我有一个方法,它尝试执行前面的查询,如下所示

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向查询传递参数的方式存在冲突。此问题的原因是两个操作都使用冒号字符(:)。
如何解决此问题并按原样执行上一个查询?

zkure5ic

zkure5ic1#

您需要转义冒号,以便jpa不会将这些冒号视为需要设置的参数:

select  tweet\\:\\:retweeted_status

相关问题