Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从Hibernate获取动态SQL列名_Java_Sql_Hibernate - Fatal编程技术网

Java 从Hibernate获取动态SQL列名

Java 从Hibernate获取动态SQL列名,java,sql,hibernate,Java,Sql,Hibernate,我有一个Oracle表,其中包含CLOB。在这个CLOB中可以是SQL语句。这可以随时更改 我目前正在尝试动态运行这些SQL语句并返回列名和数据。这将用于在网页上动态创建表 使用Hibernate,我创建查询并获得如下数据: List<Object[]> queryResults = null; SQLQuery q = session.createSQLQuery(sqlText); queryResults = q.list(); List queryResults=null;

我有一个Oracle表,其中包含CLOB。在这个CLOB中可以是SQL语句。这可以随时更改

我目前正在尝试动态运行这些SQL语句并返回列名和数据。这将用于在网页上动态创建表

使用Hibernate,我创建查询并获得如下数据:

List<Object[]> queryResults = null;
SQLQuery q = session.createSQLQuery(sqlText);
queryResults = q.list();
List queryResults=null;
SQLQuery q=session.createSQLQuery(sqlText);
queryResults=q.list();
这会获取我需要的数据,但不会获取列名。我尝试过使用
getReturnAlias()
方法,但它抛出了一个错误,“java.lang.UnsupportedOperationException:SQL查询当前不支持返回别名”


所以我的问题是:有没有办法通过Hibernate动态获取这些值?

您可以使用addScalar方法来定义列

看看16.1.1

您可以实现ResultTransformer()并在本机查询中设置它。我认为,对于本机SQL查询,您可以获得回调方法中SQL as alias参数中指定的别名。

您可以使用:

q.setResultTransformer(AliasToEntityMapResultTransformer.INSTANCE);
List<Map<String,Object>> aliasToValueMapList=query.list();
q.setResultTransformer(AliasToEntityMapResultTransformer.INSTANCE);
List aliasToValueMapList=query.List();
获取createSQLQuery中的列名


有关更多详细信息,请参阅问题。

在2018年,我建议将NativeQueryTupleTransformer与本机查询结合使用

query.setResultTransformer(new NativeQueryTupleTransformer());

结果格式为
列表
。使用本机SQL查询时,此格式非常方便。

请参阅并查看它是否满足您的需要。是否将您的评论放入答案中,以便我可以接受它?:)