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

标签 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();
}

最佳答案

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

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

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

from Student s where s.studentName = :name

结合 setParameter(...) 方法

关于java - 即使表数据退出,Hibernate Session 也返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44188277/

相关文章:

java - 是否可以在现有约 15k 的 Java Swing 代码上使用 Google Guice?

PHP MySQL 搜索使用多个文本框搜索多列

mysql - 存储过程中出现错误(错误代码 : 1064)

java - 使用带有 hibernate 的 AbstractTableModel 将 Row 插入 jtable

java - 持久对象异常 : detached entity passed to persist

java - 在JavaFX中让Window向下滚动

Java 泛型 : Error when using innerclass

java - Android onRestoreInstanceState 没有完全更新方向变化

mysql - 如何将一个查询的结果作为另一个查询的输入?

java - org.hibernate.MappingException : Unknown entity: