当前位置: 首页 > 面试题库 >

下调休眠查询的问题

荀豪
2023-03-14
问题内容

我正在使用hibernate状态向下转换query.uniqueResult()来处理问题。我有2类:-UserBean-UserLogin

在第一个中,我具有所有表字段以及所有处理数据的方法的映射。相反,第二个仅代表将存储在用户会话中的一些用户数据。

在登录方法的特定点,我执行查询并得到1行(我已经检查了查询是否确实返回了一些结果)。关键是我无法从Object类型(即query.uniqueResult()类型)转换为UserLogin类型。

有人知道这可能是问题吗?

非常感谢!

这是登录方法:

public UserLogin login(String email, String password){

    Session session = iniHibernate();
    UserLogin userLogin = null;

    try{
        session.beginTransaction();
        Query query = session.createQuery("select email, name from "
                + "UserBean u where u.email = :user_email and "
                + "u.password = :user_password");
        query.setString("user_email", email);
        query.setString("user_password",password);

        userLogin = (UserLogin) query.uniqueResult();

        session.getTransaction().commit();
    }catch (Exception e){
        System.out.println(e);
    }
    return userLogin;
}

问题答案:

根据Query.uniqueResults的文档:

用于返回与查询匹配的单个实例的便捷方法;如果查询没有返回结果,则返回null。

之所以不起作用,是因为您返回的不是UserBean我假设的String数组映射到UserLogin

尝试这样做:

(String[])query.uniqueResult();

或更改查询以获取对象:

Query query = session.createQuery("select u from "
            + "UserBean u where u.email = :user_email and "
            + "u.password = :user_password");

那应该让您开始。



 类似资料:
  • 问题内容: 我已经使用Seam 2.2.1和MySQL编写了一个正在运行的应用程序。我现在尝试将应用程序连接到 Informix, 并且当我从 hibernate ()执行查询时,出现以下异常: org.hibernate.exception.genericjdbcexception无法执行查询 当我执行查询时,执行成功。 生成的sql是 选择前2个user0_.USER_ID作为USER1_12

  • 问题内容: 我在使用Hibernate创建子查询时遇到问题。不幸的是Subqueries类几乎完全没有文档,因此我完全不知道如何将以下SQL转换为Hibernate Criteria: 我希望以下内容能够“正常工作”: 但不幸的是,事实并非如此。因此,看来我实际上必须使用Subqueries类来创建Criteria。但是我无法通过Google找到一个合理的例子,因此这使我在这里提出了疑问。 问题答

  • 问题内容: 当我尝试从数据库中删除条目时,使用 然后我可以执行以下操作: 1)如果该行存在于数据库中,则将执行两个SQL查询:一个选择,然后一个删除 2)如果数据库中不存在该行,则仅执行选择查询 但是同样,更新不是这种情况。无论是否存在数据库行,都只会执行更新查询。 请让我知道为什么这种行为用于删除操作。这不是性能问题,因为遇到了两个查询而不是一个查询? 编辑: 我正在使用休眠3.2.5 样例代码

  • 问题内容: 我一直在努力寻找可以通过JPA中的方法调用设置的所有提示的权威资源,但我的想法是空的。有人知道很好的参考吗? 问题答案: 请参阅“ 3.4.1.7。查询提示” 。

  • 问题内容: 我需要使用detachedCriteria进行此SQL查询: 这个想法是从不属于用户的游戏中获取ID。我尝试了与detachedCriteria类似的10种不同方法,但得到了“未知实体:null” MappingException代码应类似于: 还设置投影以仅返回游戏的ID。 有任何想法吗?我认为Hibernate在加入没有别名的查询时会遇到一些麻烦。添加别名是可行的,但结果是完全错误

  • 问题内容: 我想按数据库中的条件计数记录数。 我尝试使用下一个查询 但是没有方法可以执行此操作并获得结果。 我知道,我可以使用 所以问题是,查询是否具有更高的性能?如果,那么如何执行查询呢? 问题答案: 您可以通过调用来执行第一个查询,例如。 如果要将计数分配给变量,则需要将其转换为适当的类型(它可以取决于DB,但很可能是Long)。第二个查询效率很低,因为Hibernate需要从数据库中检索整个