我最近一直在使用 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"
如果有人可以帮助我,我将非常感激。
提前致谢。