即使生成csv,实体管理器也会抛出“ResultSet来自更新。无数据”

时间:2017-06-10 11:35:00

标签: mysql sql hibernate jdbc

我正在尝试使用java.persistence.Query接口运行本机sql查询。

原生查询是这样的:

 this.font = "'28 Days Later'";

当我运行上面的代码时,我的csv会正确生成,但代码会因以下异常而中断。

SELECT '"id"', '"numerical_values"', '"string_values"'
UNION ALL
SELECT id, numerical_values, CONCAT('"', REPLACE(string_values, '"', '""'), '"')
INTO OUTFILE '/tmp/values.csv'
FIELDS TERMINATED BY ',' ENCLOSED BY '' ESCAPED BY '\\'
LINES TERMINATED BY '\n'
FROM values_table;

Query qry = dataManager.createNativeQuery(MY_QUERY));
qry.getResultList();

我的dataManager对象上只有getResultList(),getSingleResult()和executeUpdate()方法可用。请建议我该怎么做才能解决这个问题。我应该为此编写JDBC代码吗?

我使用的是javax.persistence.EntityManager。

1 个答案:

答案 0 :(得分:1)

您可以将EntityManager解包到JDBC中并相对轻松地完成此任务:

Session session = entityManager.unwrap( Session.class );
session.doWork(new Work() {         
    @Override
    public void execute(Connection connection) throws SQLException {
        PreparedStatement pStmt = null;
        try {
            pStmt = connection.prepareStatement(query);
            pStmt.execute();
        } finally {
            if (pStmt != null) {
                pStmt.close();
            }                       
        }

    }
});