java - Hibernate session.createQuery(from TableProcess).list(); 的问题不起作用

标签 java sql spring hibernate spring-mvc

我最近一直在使用 Netbeans 和 MySQL 创建一个 Spring+Hibernate 应用程序,但我的代码块中遇到了一些问题:

public List listSystemProcess() {
        List procesosSistema = null;
        String hbQuery = "from TableProcess";

        try {
            Session hbSesion = HibernatePersistenceHandler.getSessionFactory().openSession();
            Transaction tx = hbSesion.beginTransaction();
            Query query = hbSesion.createQuery(hbQuery);
            procesosSistema = query.list();
            tx.commit();
            hbSesion.close();
        } catch (Exception e) {
            e.printStackTrace();
        }

        return procesosSistema;
    }

这根本不起作用,我收到一些与 SQL 语法异常相关的信息,告诉我“select id2_1,uj8_,5sd_11 from tb_2_1...”附近有语法错误

如果我创建一个 SQLQuery 而不是 HQL,它可以完美地工作,但我发现这样做没有什么用处,因为我应该为每个单独的进程执行此操作,这很乏味,而且与使用 JDBC 几乎相同。

这有效:

String hbQuery = "select p.id,p.nombre,p.descripcion,p.frecuencia_uso,t.nombre "
        + "from tb_proceso_sistema p inner join tb_tipo_proceso t "
        + "on p.tb_tipo_proceso_id = t.id";
    Query query = hbSesion.createSQLQuery(hbQuery);

但是当我这样做时,我的 jsp 也发生了一些变化:

<c:forEach items="${procesosSistema}" var="proceso">
                <tr onmouseover="this.style.backgroundColor='#ffff66';"
            onmouseout="this.style.backgroundColor='#d4e3e5';">
                    <td><c:out value="${proceso[0]}"/></td>
                    <td><c:out value="${proceso[1]}"/></td>
                    <td><c:out value="${proceso[2]}"/></td>
                    <td><c:out value="${proceso[3]}"/></td>
                    <td><c:out value="${proceso[4]}"/></td>
                    <td></td>
                </tr>
            </c:forEach>

而不是:

<c:forEach items="${procesosSistema}" var="proceso">
                <tr onmouseover="this.style.backgroundColor='#ffff66';"
            onmouseout="this.style.backgroundColor='#d4e3e5';">
                    <td><c:out value="${proceso.id}"/></td>
                    <td><c:out value="${proceso.nombre}"/></td>
                    <td><c:out value="${proceso.descripcion}"/></td>
                     ...
                    <td></td>
                </tr>
            </c:forEach>

当我设置属性“show_sql”时,它显示一个奇怪的查询,如上所示,类似于:

"select id2_1,uj8_,5sd_11 from SGDP-mysql123.tb_2_1.... tb0"

如果有人能帮助我,我将非常感激。

提前致谢。

最佳答案

你提到的我在这里有一个疑问

String hbQuery = "来自 TableProcess";

您的“TableProcess”类在 hbm.xml 文件中是否有与表的映射?

如果您在第二个查询中使用内部联接,则不能存在这样的映射,您只能像这样使用它。

关于java - Hibernate session.createQuery(from TableProcess).list(); 的问题不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17573722/

相关文章:

java - Hibernate 不合并条目

mysql - 遍历表并解析列的数据

sql - 比较 Caché 中的空值

java - 如何在Spring Data R2DBC中运行@Sql之类的查询进行测试

java - Flickr Oauth Android

java - 已删除的 APK 扩展文件仍然提供 NO_DOWNLOAD_REQUIRED

java - 从不使用 spring ldap 设置 tls_reqcert

java - java bean 创建、hibernate 和 spa 的问题

Java同步计数器不同线程打印相同的值

SQL IN 子句中包含 AND 逻辑