我正在尝试使用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。
答案 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();
}
}
}
});