Я только начинаю с 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
.
Как мне это сделать?
Session.get()
находит объект по его первичному ключу. Чтобы найти объекты с помощью других средств, вам необходимо выполнить запросы:
LoginBean user = (LoginBean)
session.createQuery("select lb from LoginBean lb where lb.email = :email")
.setString("email", email)
.uniqueResult();
Запросы и JPQL объясняются в справочной документации. Прочтите.
U использует первичный ключ таблицы для выполнения session.get(), если первичный ключ таблицы не является идентификатором электронной почты, тогда вам нужно написать запрос/критерий /sql-запрос, чтобы он соответствовал паролю электронной почты.