org.hibernate.session准备好的声明

时间:2015-12-16 20:35:15

标签: java hibernate prepared-statement

必须有办法在hibernate中准备我们的SQL查询吗?

因此,我们最终不会受到像这样的SQL注入攻击的代码......

public List<Book> findByAutor(String author) {
    String qry = "from Book where author=\'"+author+"\'"; 
    @SuppressWarnings("unchecked")
    List<Book> books = (List<Book>) getCurrentSession().createQuery(qry).list();
    return books; 
}

由于用户可以输入如下内容:

"Paulo Coelho\' or ''='"

作为作者并获取我们数据库中的所有书籍......

可能简单,但我无法在互联网上找到它:/

1 个答案:

答案 0 :(得分:1)

尝试使用这样的内容,set字符串和check字符串:

 String qry = "from Book where author= ?"; 
  @SuppressWarnings("unchecked")
  List<Book> books = (List<Book>) getCurrentSession().createQuery(qry)
  .setString(0, author)
  .list();

有关详细信息,请查看此link