Java hibernate createQuery()prep语句

Java hibernate createQuery()prep语句,java,sql,hibernate,dao,Java,Sql,Hibernate,Dao,我已经为我的泛型DAO创建了这个方法 public T find(String column, String input) { Query query = em.createQuery("select e from " + type.getSimpleName()+ " e where e."+ ":column = :input").setParameter("input", input).setParameter("column", column); return (

我已经为我的泛型DAO创建了这个方法

public T find(String column, String input) {
    Query query = em.createQuery("select e from " + type.getSimpleName()+ " e where e."+
    ":column = :input").setParameter("input", input).setParameter("column", column);
    return (T)query.getSingleResult();
}
它应该是一个泛型find()方法,允许每个扩展抽象泛型DAO类的DAO使用具有不同参数的方法

例如,UserDAO将使用此方法,参数为column=“userName”和input=userName.getText()<这是一个textfield

RecordDAO可以将其与column=recordName和input=“beatles”一起使用

我对这种方法有几个问题

  • 它会像现在这样工作吗?我的creatQuery中可以有2个setParameter()方法和参数吗

  • 在此代码中使用setParameter是否有助于代码变得更安全?当某人在程序的Textfield框中输入SQL代码而不是用户名时,是否仍能够进行SQL注入攻击

  • 有没有一种更有效的方法来创建这样一个通用的find()方法

  • 当找不到任何内容时,getSingleResult()将返回什么?空的

  • 是的,你可以

    是的。没有

    3.)取决于您的确切用例

    4.)你可以查看一下。提示:

    NoResultException-如果没有结果