java - JPA:将查询结果导出为CSV格式

标签 java jpa csv entity opencsv

以 CSV 格式导出 JPA 查询结果的最佳方法是什么? 我尝试了 opencsv 但它需要一个 java.sql.ResultSet 对象,但我不明白如何创建它。我尝试了以下代码

public ResultSet getAllUsersMap() {
    String query = "SELECT p from Participant p ORDER BY p.lastName";
    ResultSet rs = (ResultSet) em.createQuery(query).getResultList();
    return rs;
}

但我收到异常java.lang.ClassCastException:java.util.Vector无法转换为java.sql.ResultSet

最佳答案

JPA 是一个 ORM 框架规范。它与创建 CSV 文件没有直接关系。该错误只是表明您将方法 getResultList() 的返回值转换为错误的类型。

使用 opencsv,类似这样的东西应该可以工作:

String query = "SELECT p from Participant p ORDER BY p.lastName";
List resultList = em.createQuery(query).getResultList();

BufferedWriter out = new BufferedWriter(new FileWriter("result.csv"));
CSVWriter writer = new CSVWriter(out);
for (Object item : resultList) {
    String line = formatParticipantToLine(item) // method to format properties of Participant with comma's
    writer.writeNext(item);
}
writer.close();

更新: 您还可以使用http://opencsv.sourceforge.net/apidocs/au/com/bytecode/opencsv/bean/BeanToCsv.html 当然是用Participant你的bean。

关于java - JPA:将查询结果导出为CSV格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20885149/

相关文章:

java - 下面的递归任务的实现是否正确?

java - Maven 发布 :prepare namespace prefix "xsi" collides with an additional namespace declared by the element

java - JPA Criteria 多选与提取

excel - 从 CSV 复制到 Access 时避免数字被截断

json - 在 Azure Cosmos DB 或 Azure Blob 中将 JSON 转换为 CSV

mysql - CSV 导入数据库,在运行时改变外键属性

java - 如何在 GWT 中向客户端发送 XML 文档?

java - 持久性单元为 RESOURCE_LOCAL 还是 JTA?

java - 如何解决javax.el.MethodNotFoundException

java - 用 ant 删除 Maven 版本标签