下面是用于为运行PSQL的数据库创建查询的方法的一种版本。
protected Query createQuery(String hql, Object... queryArgs) {
final Query query = createQuery(hql);
for (int i = 0; i < queryArgs.length; i++) {
Object arg = queryArgs[i];
query.setParameter(i, arg);
}
return query;
}
此方法不允许在任何varargs中处理字符',当然前提是未在程序中的其他位置使用其他方法处理该字符。
下面是对该方法的潜在修改,以允许处理此字符。
protected Query createQuery(String hql, Object... queryArgs) {
final Query query = createQuery(hql);
for (int i = 0; i < queryArgs.length; i++) {
Object arg = queryArgs[i];
if(String.valueOf(arg).contains("'")){
query.setParameter(i, String.valueOf(arg).replace("'", "''"));
}else{
query.setParameter(i, arg);
}
}
return query;
}
在任何情况下此修改都将失败,并且此修改是否有可能导致该方法完成的时间显着增加?
或者,是否存在一种更优雅的解决方案来转义'字符以插入数据库?