我刚开始使用Hibernate。我正在构建一个示例应用程序,在该应用程序中,我通过用户的电子邮件地址对其进行了注册。

当他们登录时,他们使用该电子邮件地址和密码。现在,如何在查询其电子邮件ID时获取/检索记录/结果?

我的代码如下所示:

    Configuration config = new Configuration();
    SessionFactory sessionFactory = config.configure().buildSessionFactory();
    Session session = sessionFactory.openSession();

    try{
        Transaction tx = session.beginTransaction();
        LoginBean L = (LoginBean)session.get(LoginBean.class,loginBean.getEmail());

    }catch(HibernateException HE){
        System.out.println(HE.getMessage());
    }


当然,email字段是String。并且Session.get()class,integer作为其参数。我确实有一个Integer类型的主键,但是我想使用email字段进行搜索/获取。

我该怎么办?

最佳答案

Session.get()通过其主键查找实体。要通过其他方式查找实体,您需要执行查询:

LoginBean user = (LoginBean)
    session.createQuery("select lb from LoginBean lb where lb.email = :email")
           .setString("email", email)
           .uniqueResult();


参考文档中说明了查询和JPQL。阅读。

10-04 11:21