簡體   English   中英

如何在 hiberante 5 中執行類似操作

[英]How to perform like operation in hiberante 5

如何在 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”時出錯: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) in org.apache.commons.lang3.math.NumberUtils 有已棄用錯誤:(288, 63) java:找不到符號符號:變量 ProductsEntity_ 位置:類 admin.ProductsController 錯誤:(289, 63) java:找不到符號符號:變量 ProductsEntity_
位置:類 admin.ProductsController

like是 jpql 和 hql 中的有效關鍵字,因此您可以輕松地在@Query或任何其他方式中使用它。 例子:

@Query("select e from Entity e where e.someField like :param")
public Entity getEntityBySomeField(@Param("param") String param);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM