【问题标题】:How to set parameters within '' in EJB query如何在 EJB 查询中的“”内设置参数
【发布时间】:2011-11-28 20:34:05
【问题描述】:

在 EJB 查询中,为了避免 SQL 注入攻击,建议使用 setParameters() 而不是串联字符串参数。

我的问题是:如何在带有'SET'的SQL更新语句中的''内设置参数:

String basicQuery = "update some table set somecolumn = ':para'";
Query query = em.createQuery(basicQuery);
query.setParameters("para", someString);

运行时抱怨它找不到参数“para”。任何解决方法都值得赞赏。

【问题讨论】:

    标签: ejbql


    【解决方案1】:

    去掉:para周围的单引号。

    【讨论】:

    • 这个答案应该只是 |_|如果您说“使用命名参数时不需要引号并且会干扰语法”而不是仅仅说“删除它们”,那就更好了。
    • 不,它不会——你不是在写 SQL。您正在编写抽象的 EJBQL(或 JPAQL)。 :para 是命名参数(命名为“para”)的语法,setParameter 采用名称和值,JPA 实现将清理输入、添加引号等。
    猜你喜欢
    • 1970-01-01
    • 2021-06-05
    • 2023-03-17
    • 1970-01-01
    • 1970-01-01
    • 2017-07-26
    • 1970-01-01
    • 1970-01-01
    • 2021-05-20
    相关资源
    最近更新 更多