Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/315.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_Sql_Postgresql_Hibernate - Fatal编程技术网

Java Hibernate集参数

Java Hibernate集参数,java,sql,postgresql,hibernate,Java,Sql,Postgresql,Hibernate,我试图使用Hibernate执行一个简单的查询,但是它给出了错误。我在网上搜索,参数传递语法似乎正确,但不知道为什么会发生这种情况 代码 Session session = analyticsSQLSession.getSession(); try { session.beginTransaction(); Query query = session.createNativeQuery("select * from :table

我试图使用Hibernate执行一个简单的查询,但是它给出了错误。我在网上搜索,参数传递语法似乎正确,但不知道为什么会发生这种情况

代码

 Session session = analyticsSQLSession.getSession();

        try {
            session.beginTransaction();
            Query query = session.createNativeQuery("select * from :tableName");
            query.setParameter("tableName", tableName);

            List resultList = query.getResultList();
            session.close();
            System.out.println();

            return resultList;
        } catch (Exception ex) {
            throw ex;
        } finally {
            session.close();
错误

org.postgresql.util.PSQLException:错误:在“$1”处或附近出现语法错误


在这里,你必须做一些像这样的操作,试试这个,让我知道

 Session session = analyticsSQLSession.getSession();

        try {
            session.beginTransaction();
            Query query =  session.createNativeQuery(tableName("tableName"));
            //query.setParameter("tableName", tableName);


            List resultList = query.getResultList();
            session.close();
            System.out.println();

            return resultList;
        } catch (Exception ex) {
            throw ex;
        } finally {
            session.close();



public static String tableName(String tableName) {
   return "SELECT * FROM " + tableName;
}

在这里,你必须做一些像这样的操作,试试这个,让我知道

 Session session = analyticsSQLSession.getSession();

        try {
            session.beginTransaction();
            Query query =  session.createNativeQuery(tableName("tableName"));
            //query.setParameter("tableName", tableName);


            List resultList = query.getResultList();
            session.close();
            System.out.println();

            return resultList;
        } catch (Exception ex) {
            throw ex;
        } finally {
            session.close();



public static String tableName(String tableName) {
   return "SELECT * FROM " + tableName;
}

不能将表名作为参数提供。@jarlh?如果我的表名在每次查询中都要更改,我该如何实现它呢?您需要事先构建查询,至少对于表名是这样。这不是您应该如何使用hibernate的。nativeQuery用于辅助用途,entityManager.findAll将为您执行该查询。您还需要将所有表映射为类。简短的故事:要么用另一个框架编写SQL,要么学习hibernate教程。你不能提供表名作为参数。@jarlh,真的吗?如果我的表名在每次查询中都要更改,我该如何实现它呢?您需要事先构建查询,至少对于表名是这样。这不是您应该如何使用hibernate的。nativeQuery用于辅助用途,entityManager.findAll将为您执行该查询。您还需要将所有表映射为类。短篇故事:要么用另一个框架编写SQL,要么学习hibernate教程。