Java JPA对“的本地查询”;选择“输入输出文件”;
我在通过JPA本机查询执行“SELECT INTO outfile”查询时遇到问题 我尝试了以下代码:Java JPA对“的本地查询”;选择“输入输出文件”;,java,mysql,hibernate,jpa,Java,Mysql,Hibernate,Jpa,我在通过JPA本机查询执行“SELECT INTO outfile”查询时遇到问题 我尝试了以下代码: Query q = entityManager.createNativeQuery("SELECT * INTO OUTFILE '/tmp/temp.sql' FROM DummyTable"); return q.getResultList(); 但我有一个例外: 原因:java.sql.SQLException:ResultSet来自更新。没有数据 似乎JPA将其视为更新,因此我更改了
Query q = entityManager.createNativeQuery("SELECT * INTO OUTFILE '/tmp/temp.sql' FROM DummyTable");
return q.getResultList();
但我有一个例外:
原因:java.sql.SQLException:ResultSet来自更新。没有数据
似乎JPA将其视为更新,因此我更改了代码以使用执行更新:
Query q = entityManager.createNativeQuery("SELECT * INTO OUTFILE '/tmp/temp.sql' FROM DummyTable");
q.executeUpdate();
现在,我有另一个例外
原因:org.hibernate.exception.genericjdbception:无法
执行本机批量操作查询
原因:java.sql.SQLException:无法为发出executeUpdate()
挑选
有人知道如何解决这个问题吗?谢谢 找到了一个解决方法。使用直接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();
}
}
}
});
创建JPQL查询接口,而将创建本机查询接口
您试图执行的查询是本机查询。因此,如果将其更改为createNativeQuery,可能会解决一个问题。您好,谢谢您的回答。我确实使用了createNativeQuery,但我在问题中键入了错误的内容。现在我将解决这个问题。您需要将查询视为一个更新,q.getResultList()将尝试提取一个结果集,当您执行转储(“选择到输出文件”)时,获得的结果是一个整数(或长),指示有多少条记录写入了文件。感谢您的评论。我确实尝试过使用executeUpdate(),但最后出现了另一个异常。