繁体   English   中英

为什么 Spring 数据抛出 java.sql.SQLException: ResultSet is from UPDATE。 没有数据。 在执行本机 mysql 查询时

[英]Why Spring data throwing java.sql.SQLException: ResultSet is from UPDATE. No Data. on executing native mysql query

我正在使用spring-data-jpa执行以下mysql查询,

select 'FIRM NAME', 'USER_NAME', 'EMAIL', 'USER_PHONE', 'CLICK_COUNT', 'CLICK_DATE', 'PARTNER NAME'
 union all select * from (select cf.cf_firm_name, u.u_name, u.u_email, u.u_phone, co.c_clicks,
 co.c_click_date, p.p_name from click_offer co inner join user u on co.c_user_id = u.u_id inner join
 c_firm cf on u.u_cpa_firm = cf.cf_id inner join offer of on co.c_offer_id = of.o_id inner join
 partner p on of.o_partner_id = p.p_id) a into outfile '/var/lib/mysql-files/aafa.csv' fields
 terminated by ',' optionally enclosed by '"' lines terminated by '\n';

但是在成功创建文件后执行hibernate会抛出异常,

Caused by: java.sql.SQLException: ResultSet is from UPDATE. No Data.
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:965)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:898)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:887)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:861)
    at com.mysql.jdbc.ResultSetImpl.next(ResultSetImpl.java:6301)
    at com.zaxxer.hikari.pool.HikariProxyResultSet.next(HikariProxyResultSet.java)
    at org.hibernate.loader.Loader.processResultSet(Loader.java:987)
    at org.hibernate.loader.Loader.doQuery(Loader.java:949)
    at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:341)
    at org.hibernate.loader.Loader.doList(Loader.java:2692)
    ... 110 common frames omitted

但是当我尝试在mysql-workbench上运行相同的查询时,它正在执行而没有错误。

我正在使用以下代码从 spring 执行查询,

String query= DynamicQueryGenerator.queryToFetchOttomartClickCountDetails(ottoMartCsvGeneratorBean);

            Query executableQuery = entityManager.createNativeQuery(query);
                        executableQuery.setParameter("from", fromDate);
            executableQuery.setParameter("to", toDate);
            if (!NullEmptyUtils.isNullorEmpty(ottoMartCsvGeneratorBean.getFirmIds())){
                executableQuery.setParameter("firmIds", ottoMartCsvGeneratorBean.getFirmIds());
            }
            executableQuery.getResultList();

其中query包含要执行的mysql查询。

您的查询似乎是为了将某些内容写入文件,而不是返回结果集。

getResultList()期望从查询中返回结果。

尝试调用:

executableQuery.executeUpdate()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM