Romanov1981
@Romanov1981

Criteria API Как получить и вернуть пользователя по имени?

Приветствую уважаемые форумчане.

Подскажите пожалуйста, как правильно вернуть пользователя с данными?
Я сделал как смог ))) но это явно не правильно. Подскажите пожалуйста, как надо?

public final User getUserByEmail(final String email){


        EntityManager entityManager = sessionFactory.createEntityManager();

        entityManager.getTransaction().begin();

        CriteriaBuilder builder = entityManager.getCriteriaBuilder();

        CriteriaQuery<Object[]> criteria = builder.createQuery( Object[].class );
        Root<User> root = criteria.from( User.class );

        Path<String> authEmailId = root.get( "email" );
        Path<String> authPasswordId = root.get( "password" );
        Path<String> authEnabledId = root.get( "enabled" );

        criteria.multiselect( authEmailId, authPasswordId, authEnabledId );

        criteria.where( builder.equal( root.get( "email" ), email ) );

        List<Object[]> authLoginId = entityManager.createQuery( criteria ).getResultList();

        entityManager.close();

        // Далее начинается моя самодеятельность.
        Object[] objects = authLoginId.get(0);

        User user = new User();

        user.setEmail(objects[0].toString());
        user.setPassword(objects[1].toString());
        user.setEnabled((Boolean) objects[2]);

        return user;
    }
  • Вопрос задан
  • 139 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы