我在通过JPA原生查询执行"SELECT outfile“查询时遇到问题。
我尝试使用以下代码:
Query q = entityManager.createNativeQuery("SELECT * INTO OUTFILE '/tmp/temp.sql' FROM DummyTable");
return q.getResultList();
但我有个例外:
原因: java.sql.SQLException: ResultSet来自UPDATE。没有数据。
似乎JPA将其视为更新,因此我更改了代码以使用execute update:
Query q = entityManager.createNativeQuery("SELECT * INTO OUTFILE '/tmp/temp.sql' FROM DummyTable");
q.executeUpdate();
现在,我有另一个例外。
导致: org.hibernate.exception.GenericJDBCException:无法执行本机批量操作查询 导致: java.sql.SQLException:无法为选择发出executeUpdate()
有人知道怎么解决这个问题吗?谢谢!
发布于 2015-09-22 04:34:48
找到了解决办法。使用直接JDBC解决了问题。
Session session = (Session) entityManager.getDelegate();
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();
}
}
}
});
发布于 2015-09-22 04:39:58
EntityManager.createQuery
创建JPQL查询接口,而EntityManager.createNativeQuery
将创建本机查询接口。
试图执行的查询是本机查询。因此,如果将其更改为createNativeQuery,可能会解决一个问题。
https://stackoverflow.com/questions/32707153
复制相似问题