Как выполнить как операцию в Hiberante 5 - PullRequest
0 голосов
/ 14 марта 2019

Как выполнить следующий запрос в hibernate 5?

select * form product where name like "%s%" or sku like "%s%"

Пока что я использую следующий код, но он не работает.

searchText = "%" + searchText + "%";
// Search the text.
try {
    // Get the record with the username.
    SessionFactory sessionFactory = HibernateUtility.getSessionFactory();
    Session session = sessionFactory.openSession();
    session.beginTransaction();
    CriteriaBuilder criteriaBuilder = session.getCriteriaBuilder();
    CriteriaQuery<ProductsEntity> criteriaQuery = criteriaBuilder.createQuery(ProductsEntity.class);
    Root<ProductsEntity> root = criteriaQuery.from(ProductsEntity.class);

    Predicate[] predicates = new Predicate[2];
    predicates[0] = criteriaBuilder.like(root.get(ProductsEntity_.name), searchText);
    predicates[1] = criteriaBuilder.like(root.get(ProductsEntity_.sku), searchText);
    criteriaQuery.select(root).where(criteriaBuilder.or(predicates));
    Query<ProductsEntity> query = session.createQuery(criteriaQuery);
    List<ProductsEntity> productsEntityList = query.getResultList();

    productsEntityObservableList.setAll(productsEntityList);

    // Set the product table view to the observable list.
    tvProductsList.getItems().clear();
    tvProductsList.getItems().addAll(productsEntityObservableList);
    } catch (HibernateException e ){
                WindowsUtility.displayAlert("Database Error", "Unable to connect to database", Alert.AlertType.ERROR);
                e.printStackTrace();
}

Произошла следующая ошибка:

Информация: java: при компиляции модуля произошли ошибки Информация RestrauntManagementSystem: javac 1.8.0_201 использовался для Информация о компиляции Java: 14.03.19 22:51 - Компиляция завершено с 2 ошибками и 4 предупреждениями за 2 с 254 мс Предупреждение: java: исходное значение 1.5 устарело и будет удалено в будущем выпуске Предупреждение: Java: целевое значение 1.5 устарело и будет удалено в будущий выпуск Предупреждение: Java: для подавления предупреждений об устаревших параметры, используйте -Xlint: -options. /home/kazekage/IdeaProjects/RestrauntManagementSystem/src/main/java/admin/ProductsController.java Предупреждение: (258, 27) java: isNumber (java.lang.String) в org.apache.commons.lang3.math.NumberUtils устарела Ошибка: (288, 63) Java: не удается найти символ символа: переменная ProductsEntity_ location: класс admin.ProductsController Ошибка: (289, 63) Java: не удается найти символ символа: переменная ProductsEntity_
расположение: класс admin.ProductsController

1 Ответ

1 голос
/ 14 марта 2019

like является допустимым ключевым словом как в jpql, так и в hql, поэтому вы можете легко использовать его в @Query или любым другим способом.Пример:

@Query("select e from Entity e where e.someField like :param")
public Entity getEntityBySomeField(@Param("param") String param);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...