【发布时间】:2018-07-04 19:53:50
【问题描述】:
是否可以读出列名?
我的应用程序: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[] 中的列名(名称和 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;
}
谢谢
【问题讨论】:
-
管理员可以在数据库中存储这样的声明。所以我不能创建一个映射类,因为我只有 SQL 字符串。
标签: java sql hibernate entitymanager