【发布时间】:2019-08-05 16:40:12
【问题描述】:
如何在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源信息:3/14/19 10:51 PM - 编译 在 2 秒 254 毫秒内完成了 2 个错误和 4 个警告警告: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: 找不到符号 symbol: 变量 ProductsEntity_
位置:类admin.ProductsController
【问题讨论】:
-
你是在写 jpql 还是在使用条件?到目前为止,您尝试过什么?
-
要了解如何在 hibernate 5 中使用 LIKE 执行查询,请在网络上搜索
hibernate 5 like。这被称为研究,您显然也需要学习如何做到这一点。
标签: java sql hibernate java-8 jpql