【问题标题】:How to perform like operation in hiberante 5如何在hibernate 5中执行类似的操作
【发布时间】: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


【解决方案1】:

like 在 jpql 和 hql 中都是有效的关键字,因此您可以轻松地在 @Query 或任何其他方式中使用它。示例:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-14
    • 1970-01-01
    • 2014-09-26
    相关资源
    最近更新 更多