gpt4 book ai didi

java - 如何将列名称添加到结果集中。我将 Java 与 EntityManager 一起使用

转载 作者:行者123 更新时间:2023-12-02 11:42:33 25 4
gpt4 key购买 nike

是否可以读出列名?

我的应用程序:Java、SpringBoot、JPA、Hibernate

我的代码:

Query query = entityManager.createNativeQuery(
"select name as Name, concat('Time:',time, ' AND:', event) as FOO
from XYZ
where NAME = 'BLA'");
List<Object[]> resultList = query.getResultList();

我需要 ResultSet 的第一个 Object[] 中的列名(Name 和 FOO)或其他地方...

我的难看的解决方案:

private String getColumnNames(String sql) {
StringBuilder sb = new StringBuilder();
String part1 = sql.split("from")[0];

part1 = part1.replaceAll("\\(.*?\\)", "");

String[] columns = part1.split(",");
for (String column : columns) {
String alias = column;
if (column.toUpperCase().contains(" AS ")) {
alias = column.toUpperCase().split(" AS ")[1];
}
alias = alias.replace("'","");
sb.append(alias+",");
}

String columnNames = sb.toString();
if (columnNames.length() != 0) {
columnNames = columnNames.substring(0, columnNames.length()-1);
}

return columnNames;
}

谢谢

最佳答案

您应该使用 createNativeQuery() 的其他重载版本:

public Query createNativeQuery(String sqlString, Class resultClass);

public Query createNativeQuery(String sqlString, String resultSetMapping);

通过这种方式,您可以将查询结果映射到包含 namefoo 字段的类。

例如第一种方式:

Query query = entityManager.createNativeQuery(
"select name as Name, concat('Time:',time, ' AND:', event) as FOO
from XYZ
where NAME = 'BLA'", Xyz.class);
List<Xyz> resultList = query.getResultList();

请注意,query.getResultList() 将返回原始类型。

关于java - 如何将列名称添加到结果集中。我将 Java 与 EntityManager 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48445024/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com