【问题标题】:Java Hibernate set parameterJava Hibernate 设置参数
【发布时间】:2020-01-14 10:10:50
【问题描述】:

我试图使用 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: ERROR: "$1" 或附近的语法错误

【问题讨论】:

  • 您不能提供表名作为参数。
  • @jarlh 认真的吗?如果我的表名在每次查询时都会改变,我该如何实现?
  • 您事先构建查询,至少对于表名。
  • 这不是你应该使用休眠的方式。 nativeQuery 用于侧面使用, entityManager.findAll 将为您执行该查询。您还需要将所有表映射为类。短篇小说:要么使用另一个框架执行 SQL,要么学习休眠教程。

标签: java sql postgresql hibernate


【解决方案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;
}

【讨论】:

    猜你喜欢
    • 2021-11-01
    • 2020-02-06
    • 1970-01-01
    • 1970-01-01
    • 2016-01-04
    • 1970-01-01
    • 1970-01-01
    • 2019-01-27
    • 1970-01-01
    相关资源
    最近更新 更多