【发布时间】: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