即使表数据退出,Hibernate Session也会返回null

时间:2017-05-25 19:20:33

标签: java mysql hibernate

我正在尝试从学生表中检索学生对象,但我正在获取null

   public Student getStudentbyStudentName(String studentName) {
        final String query = "from Student s where s.studentName = '" + studentName + "'";
        return (Student)sessionFactory.getCurrentSession().createQuery(query).uniqueResult();
    }

我还尝试了以下方法来检索studentName的学生对象。它一直有效,直到我的网页刷新。页面刷新时,以下内容返回null。请帮忙。

public Student getStudentbyStudentName(String studentName) {
    return (Student) sessionFactory.getCurrentSession()
        .createCriteria(Student.class)
        .add(Restrictions.eq("studentName", studentName))
        .uniqueResult();
}

1 个答案:

答案 0 :(得分:1)

我猜你传递给该方法的名称是一种Unicode,那么你应该在你的MySQL连接url中放置额外的参数。 E.g:

jdbc:mysql://localhost:3306/db1?useUnicode=true&characterEncoding=UTF-8

其次,但很重要。您的第一个代码段容易受到SQL注入攻击。请使用Criteria API(您的第二个代码段)或准备您的查询:

from Student s where s.studentName = :name

与setParameter(...)方法结合使用