我需要动态设置一个表名,以便我使用query.setText(tname,abc)
例如:select a.name from :tname where a.id = '2'
我使用它setText()
是因为当我使用setString()
它时说“ tname is a invalid parameter
”,因为我假设 Hibernate 在设置字符串参数时添加了 ''。
但即使setText()
没有帮助,也给出了同样的例外。
如何动态设置表名?
回复 PSR:
所以你的意思是将表名替换为java字符串替换。但是我们不能从休眠中获得对sql注入预防等的支持,对吧?还有我们如何在类似语句的情况下在休眠中绑定参数,
例如:名称如“%:name%”
这也给了我非法参数异常:当我尝试使用 query.setString(name,"def"); 绑定它时,参数不作为命名参数存在。