[英]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.