Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/328.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.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命名查询中传递类名参数_Java_Database_Hibernate - Fatal编程技术网

Java 在Hibernate命名查询中传递类名参数

Java 在Hibernate命名查询中传递类名参数,java,database,hibernate,Java,Database,Hibernate,我正在使用Hibernate从数据库中读取数据 我使用了以下命名查询: <query name="getTable"> select tbl from ? as tbl order by col </query> 你不能那样做。占位符(?)不仅仅由Hibernate替换为您可能传递的任何参数。HQL查询被转换为SQL准备语句,占位符是该准备语句的参数 数据库使用准备好的语句来计算查询的执行计划。因此,如果查询甚至不包含表名,就不可能计算执行计划。只能将值

我正在使用Hibernate从数据库中读取数据 我使用了以下命名查询:

<query name="getTable">
    select tbl from ? as tbl order by col
    </query>

你不能那样做。占位符(
)不仅仅由Hibernate替换为您可能传递的任何参数。HQL查询被转换为SQL准备语句,占位符是该准备语句的参数


数据库使用准备好的语句来计算查询的执行计划。因此,如果查询甚至不包含表名,就不可能计算执行计划。只能将值作为参数传递给查询。无法传递列名或表名。

请尝试替换查询条件

     public List<Object> selectTables(Class className){
           Criteria criteria = session.createCriteria(className);
           return (List<Object>)criteria.list();
     }
public List selectTables(类名){
条件=session.createCriteria(className);
返回(列表)条件。列表();
}
14:13:57,463 ERROR SessionFactoryImpl:405 - Error in named query: getTable
org.hibernate.hql.ast.QuerySyntaxException: unexpected token: ? near line 2, column 25 [
    select tbl from ? as tbl order by col

    ]
     public List<Object> selectTables(Class className){
           Criteria criteria = session.createCriteria(className);
           return (List<Object>)criteria.list();
     }