【发布时间】:2018-05-02 08:36:55
【问题描述】:
我想将参数绑定应用于动态本机查询,其中我正在获取的列名将从 UI 动态传递。(在本例中为 emp_id)。
下面是示例java代码sn-p,
org.hibernate.Query queryMain;
String fetchColumn="emp_id";
String query;
query="select e.:id from Employee e";
queryMain = (org.hibernate.Query) em.createNativeQuery(query).unwrap(org.hibernate.Query.class);
queryMain.setParameter("id", fetchColumn);
但是当我执行这段代码时,我得到了 sql 语法错误异常。当我打印 sql 查询时,我得到如下
select 'emp_id' from Employee
由于该列是在字符串文字中设置的,因此会引发 sql 语法异常。有人可以帮助我吗?提前致谢!
【问题讨论】:
-
此语法用于绑定参数,而不是列名。如果您的列名是动态的,我认为您需要使用 StringBuilder 构建它(或其他东西,注意 SQL 注入)
-
@HBo 是的,谢谢您的回复,在我的情况下,表名也是动态的,而且我的表名也有相同的字符串文字,那么如何处理呢?
-
除非有更好的解决方案我不知道,否则您需要自己做。我会起草一个小例子
标签: java jpa hibernate-entitymanager