Как запросить идентификатор электронной почты, используя Hibernate, используя Session.get ()?

1

Я только начинаю с Hibernate. И я создаю образец приложения, в котором я регистрирую пользователей по их адресу электронной почты.

И когда они входят в систему, они используют этот адрес электронной почты и пароль. Теперь, как мне получить/получить запись/результат при запросе с их идентификаторами электронной почты?

Мой код выглядит так:

    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.

Как мне это сделать?

Теги:
hibernate
hibernate-mapping

2 ответа

2
Лучший ответ

Session.get() находит объект по его первичному ключу. Чтобы найти объекты с помощью других средств, вам необходимо выполнить запросы:

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

Запросы и JPQL объясняются в справочной документации. Прочтите.

  • 0
    Есть ли способ найти по другим атрибутам без использования запросов?
1

U использует первичный ключ таблицы для выполнения session.get(), если первичный ключ таблицы не является идентификатором электронной почты, тогда вам нужно написать запрос/критерий /sql-запрос, чтобы он соответствовал паролю электронной почты.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню